Jump to content

Recommended Posts

Posted (edited)

Hello,

I'm trying to make an auto miner. When I right-click it with a fuel item or block it should take the item and activate and deactivate when the fuel runs out. But now when I right-click with a fuel item it doesn't work. And when I right-click with a fuel block it activates. Also, how do I get the slot that the player is holding?

My code so far:

Block class

public class BlockAutoMiner extends Block implements ITileEntityProvider {

	public static final PropertyDirection FACING = BlockHorizontal.FACING;
	private final boolean powered;

	public BlockAutoMiner(boolean powered) {
		super(Material.PISTON);
		this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
		this.powered = powered;
	}

	@Override
	public Item getItemDropped(IBlockState state, Random rand, int fortune) {
		return Item.getItemFromBlock(AMBlocks.AUTO_MINER);
	}

	@Override
	public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state) {
		return new ItemStack(AMBlocks.AUTO_MINER);
	}

	public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state) {
		this.setDefaultFacing(worldIn, pos, state);
	}

	private void setDefaultFacing(World worldIn, BlockPos pos, IBlockState state) {
		if (!worldIn.isRemote) {
			IBlockState iblockstate = worldIn.getBlockState(pos.north());
			IBlockState iblockstate1 = worldIn.getBlockState(pos.south());
			IBlockState iblockstate2 = worldIn.getBlockState(pos.west());
			IBlockState iblockstate3 = worldIn.getBlockState(pos.east());
			EnumFacing enumfacing = (EnumFacing) state.getValue(FACING);

			if (enumfacing == EnumFacing.NORTH && iblockstate.isFullBlock() && !iblockstate1.isFullBlock()) {
				enumfacing = EnumFacing.SOUTH;
			} else if (enumfacing == EnumFacing.SOUTH && iblockstate1.isFullBlock() && !iblockstate.isFullBlock()) {
				enumfacing = EnumFacing.NORTH;
			} else if (enumfacing == EnumFacing.WEST && iblockstate2.isFullBlock() && !iblockstate3.isFullBlock()) {
				enumfacing = EnumFacing.EAST;
			} else if (enumfacing == EnumFacing.EAST && iblockstate3.isFullBlock() && !iblockstate2.isFullBlock()) {
				enumfacing = EnumFacing.WEST;
			}

			worldIn.setBlockState(pos, state.withProperty(FACING, enumfacing), 2);
		}
	}

	public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY,
			float hitZ, int meta, EntityLivingBase placer) {
		return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
	}

	public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer,
			ItemStack stack) {
		worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing()), 2);
	}

	public IBlockState getStateFromMeta(int meta) {
		EnumFacing enumfacing = EnumFacing.getFront(meta);

		if (enumfacing.getAxis() == EnumFacing.Axis.Y) {
			enumfacing = EnumFacing.NORTH;
		}

		return this.getDefaultState().withProperty(FACING, enumfacing);
	}

	public int getMetaFromState(IBlockState state) {
		return ((EnumFacing) state.getValue(FACING)).getIndex();
	}

	public IBlockState withRotation(IBlockState state, Rotation rot) {
		return state.withProperty(FACING, rot.rotate((EnumFacing) state.getValue(FACING)));
	}

	public IBlockState withMirror(IBlockState state, Mirror mirrorIn) {
		return state.withRotation(mirrorIn.toRotation((EnumFacing) state.getValue(FACING)));
	}

	protected BlockStateContainer createBlockState() {
		return new BlockStateContainer(this, new IProperty[] { FACING });
	}

	@Override
	@SideOnly(Side.CLIENT)
	public void randomDisplayTick(IBlockState stateIn, World worldIn, BlockPos pos, Random rand) {
		if (this.powered) {
			EnumFacing enumfacing = (EnumFacing) stateIn.getValue(FACING);
			double d0 = (double) pos.getX() + 0.5D;
			double d1 = (double) pos.getY() + 0.5D;
			double d2 = (double) pos.getZ() + 0.5D;
			double d3 = 0.52D;
			double d4 = rand.nextDouble() * 0.6D - 0.3D;

			switch (enumfacing) {
			case WEST:
				worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d3, d1, d2 + d4, 0.0D, 0.0D, 0.0D,
						new int[0]);
				break;
			case EAST:
				worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 - d3, d1, d2 + d4, 0.0D, 0.0D, 0.0D,
						new int[0]);
				break;
			case NORTH:
				worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d4, d1, d2 + d3, 0.0D, 0.0D, 0.0D,
						new int[0]);
				break;
			case SOUTH:
				worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d4, d1, d2 - d3, 0.0D, 0.0D, 0.0D,
						new int[0]);
			default:
				break;
			}
		}
	}

	@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) {
			if (hand == EnumHand.MAIN_HAND) {
				if (isItemFuel(playerIn.getHeldItemMainhand())) {
					if (worldIn.getTileEntity(pos) instanceof TileEntityAutoMiner) {
						TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
						te.addFuel(getItemBurnTime(playerIn.getHeldItemMainhand()));
						playerIn.inventory.decrStackSize(EntityEquipmentSlot.MAINHAND.getIndex(), 1);
					}
					if (!powered) {
						worldIn.setBlockState(pos, AMBlocks.POWERED_AUTO_MINER.getDefaultState().withProperty(FACING,
								state.getValue(FACING)), 3);
					}
				} else {
					if (powered) {
						worldIn.setBlockState(pos,
								AMBlocks.AUTO_MINER.getDefaultState().withProperty(FACING, state.getValue(FACING)), 3);
					}
				}
				return true;
			}
		}
		return false;
	}

	public static int getItemBurnTime(ItemStack stack) {
		if (stack.isEmpty()) {
			return 0;
		} else {
			Item item = stack.getItem();
			if (!item.getRegistryName().getResourceDomain().equals("minecraft")) {
				int burnTime = net.minecraftforge.fml.common.registry.GameRegistry.getFuelValue(stack);
				if (burnTime != 0)
					return burnTime;
			}

			if (item == Item.getItemFromBlock(Blocks.WOODEN_SLAB)) {
				return 150;
			} else if (item == Item.getItemFromBlock(Blocks.WOOL)) {
				return 100;
			} else if (item == Item.getItemFromBlock(Blocks.CARPET)) {
				return 67;
			} else if (item == Item.getItemFromBlock(Blocks.LADDER)) {
				return 300;
			} else if (item == Item.getItemFromBlock(Blocks.WOODEN_BUTTON)) {
				return 100;
			} else if (Block.getBlockFromItem(item).getDefaultState().getMaterial() == Material.WOOD) {
				return 300;
			} else if (item == Item.getItemFromBlock(Blocks.COAL_BLOCK)) {
				return 16000;
			} else if (item instanceof ItemTool && "WOOD".equals(((ItemTool) item).getToolMaterialName())) {
				return 200;
			} else if (item instanceof ItemSword && "WOOD".equals(((ItemSword) item).getToolMaterialName())) {
				return 200;
			} else if (item instanceof ItemHoe && "WOOD".equals(((ItemHoe) item).getMaterialName())) {
				return 200;
			} else if (item == Items.STICK) {
				return 100;
			} else if (item != Items.BOW && item != Items.FISHING_ROD) {
				if (item == Items.SIGN) {
					return 200;
				} else if (item == Items.COAL) {
					return 1600;
				} else if (item == Items.LAVA_BUCKET) {
					return 20000;
				} else if (item != Item.getItemFromBlock(Blocks.SAPLING) && item != Items.BOWL) {
					if (item == Items.BLAZE_ROD) {
						return 2400;
					} else if (item instanceof ItemDoor && item != Items.IRON_DOOR) {
						return 200;
					} else {
						return item instanceof ItemBoat ? 400 : 0;
					}
				} else {
					return 100;
				}
			} else {
				return 300;
			}
		}
	}

	public static boolean isItemFuel(ItemStack stack) {
		return getItemBurnTime(stack) > 0;
	}

	@Override
	public TileEntity createNewTileEntity(World worldIn, int meta) {
		return new TileEntityAutoMiner();
	}
}

Tileentity class

public class TileEntityAutoMiner extends TileEntity implements ITickable {

	public int FUEL_AMOUNT = 0;

	public void addFuel(int amount) {
		this.FUEL_AMOUNT += amount;
		markDirty();
		IBlockState state = world.getBlockState(pos);
		world.notifyBlockUpdate(pos, state, state, 3);
	}

	public void removeFuel() {
		if (this.FUEL_AMOUNT > 0) {
			this.FUEL_AMOUNT--;
			markDirty();
			IBlockState state = world.getBlockState(pos);
			world.notifyBlockUpdate(pos, state, state, 3);
		}
	}

	@Override
	public NBTTagCompound writeToNBT(NBTTagCompound compound) {
		super.writeToNBT(compound);
		writeUpdateTag(compound);
		return compound;
	}

	@Override
	public void readFromNBT(NBTTagCompound compound) {
		super.readFromNBT(compound);
		readUpdateTag(compound);
	}

	@Override
	public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
		NBTTagCompound compound = pkt.getNbtCompound();
		readUpdateTag(compound);
	}

	@Override
	public SPacketUpdateTileEntity getUpdatePacket() {
		NBTTagCompound compound = new NBTTagCompound();
		writeUpdateTag(compound);
		return new SPacketUpdateTileEntity(pos, getBlockMetadata(), compound);
	}

	@Override
	public NBTTagCompound getUpdateTag() {
		NBTTagCompound compound = super.getUpdateTag();
		writeUpdateTag(compound);
		return compound;
	}

	public void writeUpdateTag(NBTTagCompound compound) {
		compound.setInteger("FuelAmount", this.FUEL_AMOUNT);
	}

	public void readUpdateTag(NBTTagCompound compound) {
		this.FUEL_AMOUNT = compound.getInteger("FuelAmount");
	}

	@Override
	public void update() {
		if (world.getBlockState(pos).getBlock() == AMBlocks.POWERED_AUTO_MINER) {
			removeFuel();

			if (FUEL_AMOUNT <= 0) {
				FUEL_AMOUNT = 0;
				world.setBlockState(pos, AMBlocks.AUTO_MINER.getDefaultState().withProperty(BlockAutoMiner.FACING,
						world.getBlockState(pos).getValue(BlockAutoMiner.FACING)), 3);
			}
		}
	}

}

 

Edited by Kokkie

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Posted (edited)
29 minutes ago, Kokkie said:

playerIn.getHeldItemMainhand()

You have the hand the player clicks your block with as an argument. That argument is called hand.

29 minutes ago, Kokkie said:

public static int getItemBurnTime(ItemStack stack)

Do not reinvent the wheel. That method already exists at TileEntityFurnace and it is public and static.

29 minutes ago, Kokkie said:

how do I get the slot that the player is holding?

Offhand - 40. Mainhand - player.inventory.currentItem.

 

29 minutes ago, Kokkie said:

playerIn.inventory.decrStackSize(EntityEquipmentSlot.MAINHAND.getIndex(), 1);

=>

playerIn.getHeldItem(hand).shrink(1);

 

As for your issue itself try debugging it. Set some breakpoints up, see which method fails the checks, try figuring out why.

 

Edit: Okay, just want to clarify something as my response may seem weird at the point of me talking about the hand argument as you clearly see it existing. To clarify - the issue here is me failing to see any reason as to why are you ignoring the offhand completely and only do things for the main hand.

I also tested your code with hand and method references corrected and I do not have the issue.

Edited by V0idWa1k3r
  • Like 1
Posted

So, I now have this, and it seems to be working fine.

	@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 && hand == EnumHand.MAIN_HAND) {
			if (TileEntityFurnace.isItemFuel(playerIn.getHeldItem(hand))) {
				if (!playerIn.isCreative()) {
					playerIn.getHeldItem(hand).shrink(1);
				}
				if (worldIn.getTileEntity(pos) instanceof TileEntityAutoMiner) {
					TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
					te.addFuel(TileEntityFurnace.getItemBurnTime(playerIn.getHeldItem(hand)));
				}
			} else if (playerIn.getHeldItem(hand).getItem() == AMItems.WRENCH) {
				if (!powered) {
					worldIn.setBlockState(pos,
							AMBlocks.POWERED_AUTO_MINER.getDefaultState().withProperty(FACING, state.getValue(FACING)),
							3);
				} else {
					worldIn.setBlockState(pos,
							AMBlocks.AUTO_MINER.getDefaultState().withProperty(FACING, state.getValue(FACING)), 3);
				}
			}
			return true;
		}
		return false;

	}

But now, every time I activate it with a wrench, it immediately changes back to the deactivated. I tested and found out it was because fuel kept getting reset to zero when activated. How can I fix this? Here's the tile entity.

public class TileEntityAutoMiner extends TileEntity implements ITickable {

	public int FUEL_AMOUNT = 0;

	public void addFuel(int amount) {
		System.out.println("Before: " + FUEL_AMOUNT);
		System.out.println("Added: " + amount);
		this.FUEL_AMOUNT += amount;
		System.out.println("After: " + FUEL_AMOUNT);
		markDirty();
		IBlockState state = world.getBlockState(pos);
		world.notifyBlockUpdate(pos, state, state, 3);
	}

	public void removeFuel() {
		if (this.FUEL_AMOUNT > 0) {
			this.FUEL_AMOUNT--;
			markDirty();
			IBlockState state = world.getBlockState(pos);
			world.notifyBlockUpdate(pos, state, state, 3);
		}
	}

	@Override
	public NBTTagCompound writeToNBT(NBTTagCompound compound) {
		super.writeToNBT(compound);
		writeUpdateTag(compound);
		return compound;
	}

	@Override
	public void readFromNBT(NBTTagCompound compound) {
		super.readFromNBT(compound);
		readUpdateTag(compound);
	}

	@Override
	public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
		NBTTagCompound compound = pkt.getNbtCompound();
		readUpdateTag(compound);
	}

	@Override
	public SPacketUpdateTileEntity getUpdatePacket() {
		NBTTagCompound compound = new NBTTagCompound();
		writeUpdateTag(compound);
		return new SPacketUpdateTileEntity(pos, getBlockMetadata(), compound);
	}

	@Override
	public NBTTagCompound getUpdateTag() {
		NBTTagCompound compound = super.getUpdateTag();
		writeUpdateTag(compound);
		return compound;
	}

	public void writeUpdateTag(NBTTagCompound compound) {
		compound.setInteger("FuelAmount", this.FUEL_AMOUNT);
	}

	public void readUpdateTag(NBTTagCompound compound) {
		this.FUEL_AMOUNT = compound.getInteger("FuelAmount");
	}

	@Override
	public void update() {
		if (world.getBlockState(pos).getBlock() == AMBlocks.POWERED_AUTO_MINER) {
			removeFuel();
			if (FUEL_AMOUNT <= 0) {
				FUEL_AMOUNT = 0;
				world.setBlockState(pos, AMBlocks.AUTO_MINER.getDefaultState().withProperty(BlockAutoMiner.FACING,
						world.getBlockState(pos).getValue(BlockAutoMiner.FACING)), 3);
			}
		}
	}

}

 

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Posted

When you change a blockstate of a block it's tileentity gets recreated unless you explicitly tell it to not do so. You can do so at TileEntity::shouldRefresh. Note that you should not blindly return false as this check will fire even if the block itself is completely different.

Posted

Yeah, that can work, sure. There are potential issues with implementations of BlockAutoMiner, if you have multiple of them that is.

That is not a typo in game's code. That is a typo in MCP mappings. You can submit a bug report on their repo if you feel like it.

Posted

Apart from that I do not see anything that would reset the fuel values. I see that you are changing blockstates in your tileentity without a check if you are on a server and not a client so it could be causing your issue.

Why do you have 2 different blocks for your auto miner? Powered and not can be a property that is obtained from say your tileentity in getActualState. You will need to make sure it is synced though.

Posted (edited)

I do not think vanilla has an example of that kind. I can provide you with an example though. It shows you how to make metadata independent properties that are obtained from data in tileentity. Making powered a property should not be much different from that.

Edited by V0idWa1k3r
Posted

Here's another example, this time with 3 properties all controlled by TE data. The important thing is that when the data changes you need to sync it to the client, you need to call these methods, override these, and make sure that the property data is saved to NBT.

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.

Posted

Also, is this going to work?

package com.Egietje.AutoMiner.blocks;

import java.util.Random;

import com.Egietje.AutoMiner.entities.tileentities.TileEntityAutoMiner;
import com.Egietje.AutoMiner.init.AMBlocks;
import com.Egietje.AutoMiner.init.AMItems;

import net.minecraft.block.Block;
import net.minecraft.block.BlockHorizontal;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.init.SoundEvents;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBoat;
import net.minecraft.item.ItemDoor;
import net.minecraft.item.ItemHoe;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.item.ItemTool;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityFurnace;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.Mirror;
import net.minecraft.util.Rotation;
import net.minecraft.util.SoundCategory;
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;

public class BlockAutoMiner extends Block implements ITileEntityProvider {

	public static final PropertyDirection FACING = BlockHorizontal.FACING;
	public static IProperty ACTIVATED = PropertyBool.create("activated");

	public BlockAutoMiner() {
		super(Material.PISTON);
		this.setDefaultState(
				this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVATED, false));
	}

	@Override
	public Item getItemDropped(IBlockState state, Random rand, int fortune) {
		return Item.getItemFromBlock(AMBlocks.AUTO_MINER);
	}

	@Override
	public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state) {
		return new ItemStack(AMBlocks.AUTO_MINER);
	}

	public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state) {
		this.setDefaultFacing(worldIn, pos, state);
	}

	private void setDefaultFacing(World worldIn, BlockPos pos, IBlockState state) {
		if (!worldIn.isRemote) {
			IBlockState iblockstate = worldIn.getBlockState(pos.north());
			IBlockState iblockstate1 = worldIn.getBlockState(pos.south());
			IBlockState iblockstate2 = worldIn.getBlockState(pos.west());
			IBlockState iblockstate3 = worldIn.getBlockState(pos.east());
			EnumFacing enumfacing = (EnumFacing) state.getValue(FACING);

			if (enumfacing == EnumFacing.NORTH && iblockstate.isFullBlock() && !iblockstate1.isFullBlock()) {
				enumfacing = EnumFacing.SOUTH;
			} else if (enumfacing == EnumFacing.SOUTH && iblockstate1.isFullBlock() && !iblockstate.isFullBlock()) {
				enumfacing = EnumFacing.NORTH;
			} else if (enumfacing == EnumFacing.WEST && iblockstate2.isFullBlock() && !iblockstate3.isFullBlock()) {
				enumfacing = EnumFacing.EAST;
			} else if (enumfacing == EnumFacing.EAST && iblockstate3.isFullBlock() && !iblockstate2.isFullBlock()) {
				enumfacing = EnumFacing.WEST;
			}

			worldIn.setBlockState(pos, state.withProperty(FACING, enumfacing), 2);
		}
	}

	public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY,
			float hitZ, int meta, EntityLivingBase placer) {
		return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
	}

	public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer,
			ItemStack stack) {
		worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing()), 2);
	}

	public IBlockState getStateFromMeta(int meta) {
		EnumFacing enumfacing = EnumFacing.getFront(meta);

		if (enumfacing.getAxis() == EnumFacing.Axis.Y) {
			enumfacing = EnumFacing.NORTH;
		}

		return this.getDefaultState().withProperty(FACING, enumfacing);
	}

	@Override
	public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
		TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
		return state.withProperty(ACTIVATED, te.ACTIVATED);
	}

	public int getMetaFromState(IBlockState state) {
		return ((EnumFacing) state.getValue(FACING)).getIndex();
	}

	public IBlockState withRotation(IBlockState state, Rotation rot) {
		return state.withProperty(FACING, rot.rotate((EnumFacing) state.getValue(FACING)));
	}

	public IBlockState withMirror(IBlockState state, Mirror mirrorIn) {
		return state.withRotation(mirrorIn.toRotation((EnumFacing) state.getValue(FACING)));
	}

	protected BlockStateContainer createBlockState() {
		return new BlockStateContainer(this, new IProperty[] { FACING, ACTIVATED });
	}

	@Override
	@SideOnly(Side.CLIENT)
	public void randomDisplayTick(IBlockState stateIn, World worldIn, BlockPos pos, Random rand) {
		if (worldIn.getTileEntity(pos) instanceof TileEntityAutoMiner) {
			TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
			if (te.ACTIVATED) {
				EnumFacing enumfacing = (EnumFacing) stateIn.getValue(FACING);
				double d0 = (double) pos.getX() + 0.5D;
				double d1 = (double) pos.getY() + 0.5D;
				double d2 = (double) pos.getZ() + 0.5D;
				double d3 = 0.52D;
				double d4 = rand.nextDouble() * 0.6D - 0.3D;

				switch (enumfacing) {
				case WEST:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d3, d1, d2 + d4, 0.0D, 0.0D, 0.0D,
							new int[0]);
					break;
				case EAST:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 - d3, d1, d2 + d4, 0.0D, 0.0D, 0.0D,
							new int[0]);
					break;
				case NORTH:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d4, d1, d2 + d3, 0.0D, 0.0D, 0.0D,
							new int[0]);
					break;
				case SOUTH:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d4, d1, d2 - d3, 0.0D, 0.0D, 0.0D,
							new int[0]);
				default:
					break;
				}
			}
		}
	}

	@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 && hand == EnumHand.MAIN_HAND) {
			if (TileEntityFurnace.isItemFuel(playerIn.getHeldItem(hand))) {
				if (!playerIn.isCreative()) {
					playerIn.getHeldItem(hand).shrink(1);
				}
				if (worldIn.getTileEntity(pos) instanceof TileEntityAutoMiner) {
					TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
					te.addFuel(TileEntityFurnace.getItemBurnTime(playerIn.getHeldItem(hand)));
				}
			} else if (playerIn.getHeldItem(hand).getItem() == AMItems.WRENCH) {
				if (worldIn.getTileEntity(pos) instanceof TileEntityAutoMiner) {
					TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
					if (te.ACTIVATED) {
						te.setActivated(false);
					} else {
						te.setActivated(true);
					}
				}
			}
			return true;
		}
		return false;

	}

	@Override
	public TileEntity createNewTileEntity(World worldIn, int meta) {
		return new TileEntityAutoMiner();
	}
}
package com.Egietje.AutoMiner.entities.tileentities;

import com.Egietje.AutoMiner.blocks.BlockAutoMiner;
import com.Egietje.AutoMiner.init.AMBlocks;

import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ITickable;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;

public class TileEntityAutoMiner extends TileEntity implements ITickable {

	public int FUEL_AMOUNT = 0;
	public boolean ACTIVATED = false;

	public void addFuel(int amount) {
		System.out.println("Before: " + FUEL_AMOUNT);
		System.out.println("Added: " + amount);
		this.FUEL_AMOUNT += amount;
		System.out.println("After: " + FUEL_AMOUNT);
		markDirty();
		IBlockState state = world.getBlockState(pos);
		world.notifyBlockUpdate(pos, state, state, 3);
	}

	public void removeFuel() {
		if (this.FUEL_AMOUNT > 0) {
			this.FUEL_AMOUNT--;
			markDirty();
			IBlockState state = world.getBlockState(pos);
			world.notifyBlockUpdate(pos, state, state, 3);
		}
	}
	
	public boolean isActivated() {
		return ACTIVATED;
	}
	
	public void setActivated(boolean active) {
		ACTIVATED = active;
	}

	@Override
	public NBTTagCompound writeToNBT(NBTTagCompound compound) {
		super.writeToNBT(compound);
		compound.setInteger("FuelAmount", this.FUEL_AMOUNT);
		compound.setBoolean("Activated", this.ACTIVATED);
		return compound;
	}

	@Override
	public void readFromNBT(NBTTagCompound compound) {
		super.readFromNBT(compound);
		this.FUEL_AMOUNT = compound.getInteger("FuelAmount");
		this.ACTIVATED = compound.getBoolean("Activated");
	}

	@Override
	public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
		super.onDataPacket(net, pkt);
		handleUpdateTag(pkt.getNbtCompound());
	}

	@Override
	public SPacketUpdateTileEntity getUpdatePacket() {
		return new SPacketUpdateTileEntity(pos, 3, getUpdateTag());
	}

	@Override
	public NBTTagCompound getUpdateTag() {
		return this.writeToNBT(new NBTTagCompound());
	}

	@Override
	public void update() {
		if (ACTIVATED) {
			removeFuel();
			if (FUEL_AMOUNT <= 0) {
				FUEL_AMOUNT = 0;
				setActivated(false);
			}
		}
	}

	@Override
	public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newSate) {
		return !(newSate.getBlock() instanceof BlockAutoMiner);
	}

}

 

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Posted

1) Do not use ITileEntityProvider, override the methods found in the Block class. ITileEntityProvider is old and is based on metadata, not IBlockstate

2) You need to mark dirty in the case if (FUEL_AMOUNT <= 0) { } as well.

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.

Posted

So now I've got this.

package com.Egietje.AutoMiner.blocks;

import java.util.Random;

import com.Egietje.AutoMiner.entities.tileentities.TileEntityAutoMiner;
import com.Egietje.AutoMiner.init.AMBlocks;
import com.Egietje.AutoMiner.init.AMItems;

import net.minecraft.block.Block;
import net.minecraft.block.BlockHorizontal;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.init.SoundEvents;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBoat;
import net.minecraft.item.ItemDoor;
import net.minecraft.item.ItemHoe;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.item.ItemTool;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityFurnace;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.Mirror;
import net.minecraft.util.Rotation;
import net.minecraft.util.SoundCategory;
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;

public class BlockAutoMiner extends Block {

	public static final PropertyDirection FACING = BlockHorizontal.FACING;
	public static IProperty ACTIVATED = PropertyBool.create("activated");

	public BlockAutoMiner() {
		super(Material.PISTON);
		this.setDefaultState(
				this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVATED, false));
	}

	@Override
	public Item getItemDropped(IBlockState state, Random rand, int fortune) {
		return Item.getItemFromBlock(AMBlocks.AUTO_MINER);
	}

	@Override
	public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state) {
		return new ItemStack(AMBlocks.AUTO_MINER);
	}

	public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state) {
		this.setDefaultFacing(worldIn, pos, state);
	}

	private void setDefaultFacing(World worldIn, BlockPos pos, IBlockState state) {
		if (!worldIn.isRemote) {
			IBlockState iblockstate = worldIn.getBlockState(pos.north());
			IBlockState iblockstate1 = worldIn.getBlockState(pos.south());
			IBlockState iblockstate2 = worldIn.getBlockState(pos.west());
			IBlockState iblockstate3 = worldIn.getBlockState(pos.east());
			EnumFacing enumfacing = (EnumFacing) state.getValue(FACING);

			if (enumfacing == EnumFacing.NORTH && iblockstate.isFullBlock() && !iblockstate1.isFullBlock()) {
				enumfacing = EnumFacing.SOUTH;
			} else if (enumfacing == EnumFacing.SOUTH && iblockstate1.isFullBlock() && !iblockstate.isFullBlock()) {
				enumfacing = EnumFacing.NORTH;
			} else if (enumfacing == EnumFacing.WEST && iblockstate2.isFullBlock() && !iblockstate3.isFullBlock()) {
				enumfacing = EnumFacing.EAST;
			} else if (enumfacing == EnumFacing.EAST && iblockstate3.isFullBlock() && !iblockstate2.isFullBlock()) {
				enumfacing = EnumFacing.WEST;
			}

			worldIn.setBlockState(pos, state.withProperty(FACING, enumfacing), 2);
		}
	}

	public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY,
			float hitZ, int meta, EntityLivingBase placer) {
		return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
	}

	public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer,
			ItemStack stack) {
		worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing()), 2);
	}

	public IBlockState getStateFromMeta(int meta) {
		EnumFacing enumfacing = EnumFacing.getFront(meta);

		if (enumfacing.getAxis() == EnumFacing.Axis.Y) {
			enumfacing = EnumFacing.NORTH;
		}

		return this.getDefaultState().withProperty(FACING, enumfacing);
	}

	@Override
	public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
		TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
		return state.withProperty(ACTIVATED, te.ACTIVATED);
	}

	public int getMetaFromState(IBlockState state) {
		return ((EnumFacing) state.getValue(FACING)).getIndex();
	}

	public IBlockState withRotation(IBlockState state, Rotation rot) {
		return state.withProperty(FACING, rot.rotate((EnumFacing) state.getValue(FACING)));
	}

	public IBlockState withMirror(IBlockState state, Mirror mirrorIn) {
		return state.withRotation(mirrorIn.toRotation((EnumFacing) state.getValue(FACING)));
	}

	protected BlockStateContainer createBlockState() {
		return new BlockStateContainer(this, new IProperty[] { FACING, ACTIVATED });
	}

	@Override
	@SideOnly(Side.CLIENT)
	public void randomDisplayTick(IBlockState stateIn, World worldIn, BlockPos pos, Random rand) {
		if (worldIn.getTileEntity(pos) instanceof TileEntityAutoMiner) {
			TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
			if (te.ACTIVATED) {
				EnumFacing enumfacing = (EnumFacing) stateIn.getValue(FACING);
				double d0 = (double) pos.getX() + 0.5D;
				double d1 = (double) pos.getY() + 0.5D;
				double d2 = (double) pos.getZ() + 0.5D;
				double d3 = 0.52D;
				double d4 = rand.nextDouble() * 0.6D - 0.3D;

				switch (enumfacing) {
				case WEST:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d3, d1, d2 + d4, 0.0D, 0.0D, 0.0D,
							new int[0]);
					break;
				case EAST:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 - d3, d1, d2 + d4, 0.0D, 0.0D, 0.0D,
							new int[0]);
					break;
				case NORTH:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d4, d1, d2 + d3, 0.0D, 0.0D, 0.0D,
							new int[0]);
					break;
				case SOUTH:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d4, d1, d2 - d3, 0.0D, 0.0D, 0.0D,
							new int[0]);
				default:
					break;
				}
			}
		}
	}

	@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 && hand == EnumHand.MAIN_HAND) {
			if (TileEntityFurnace.isItemFuel(playerIn.getHeldItem(hand))) {
				if (!playerIn.isCreative()) {
					playerIn.getHeldItem(hand).shrink(1);
				}
				if (worldIn.getTileEntity(pos) instanceof TileEntityAutoMiner) {
					TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
					te.addFuel(TileEntityFurnace.getItemBurnTime(playerIn.getHeldItem(hand)));
				}
			} else if (playerIn.getHeldItem(hand).getItem() == AMItems.WRENCH) {
				if (worldIn.getTileEntity(pos) instanceof TileEntityAutoMiner) {
					TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
					if (te.ACTIVATED) {
						te.setActivated(false);
					} else {
						te.setActivated(true);
					}
				}
			}
			return true;
		}
		return false;

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

	@Override
	public TileEntity createTileEntity(World world, IBlockState state) {
		return new TileEntityAutoMiner();
	}
}
package com.Egietje.AutoMiner.entities.tileentities;

import com.Egietje.AutoMiner.blocks.BlockAutoMiner;
import com.Egietje.AutoMiner.init.AMBlocks;

import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ITickable;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;

public class TileEntityAutoMiner extends TileEntity implements ITickable {

	public int FUEL_AMOUNT = 0;
	public boolean ACTIVATED = false;

	public void addFuel(int amount) {
		System.out.println("Before: " + FUEL_AMOUNT);
		System.out.println("Added: " + amount);
		this.FUEL_AMOUNT += amount;
		System.out.println("After: " + FUEL_AMOUNT);
		markDirty();
		IBlockState state = world.getBlockState(pos);
		world.notifyBlockUpdate(pos, state, state, 3);
	}

	public void removeFuel() {
		if (this.FUEL_AMOUNT > 0) {
			this.FUEL_AMOUNT--;
			markDirty();
			IBlockState state = world.getBlockState(pos);
			world.notifyBlockUpdate(pos, state, state, 3);
		}
	}
	
	public boolean isActivated() {
		return ACTIVATED;
	}
	
	public void setActivated(boolean active) {
		ACTIVATED = active;
		markDirty();
		IBlockState state = world.getBlockState(pos);
		world.notifyBlockUpdate(pos, state, state, 3);
	}

	@Override
	public NBTTagCompound writeToNBT(NBTTagCompound compound) {
		super.writeToNBT(compound);
		compound.setInteger("FuelAmount", this.FUEL_AMOUNT);
		compound.setBoolean("Activated", this.ACTIVATED);
		return compound;
	}

	@Override
	public void readFromNBT(NBTTagCompound compound) {
		super.readFromNBT(compound);
		this.FUEL_AMOUNT = compound.getInteger("FuelAmount");
		this.ACTIVATED = compound.getBoolean("Activated");
	}

	@Override
	public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
		super.onDataPacket(net, pkt);
		handleUpdateTag(pkt.getNbtCompound());
	}

	@Override
	public SPacketUpdateTileEntity getUpdatePacket() {
		return new SPacketUpdateTileEntity(pos, 3, getUpdateTag());
	}

	@Override
	public NBTTagCompound getUpdateTag() {
		return this.writeToNBT(new NBTTagCompound());
	}

	@Override
	public void update() {
		if (ACTIVATED) {
			removeFuel();
			if (FUEL_AMOUNT <= 0) {
				FUEL_AMOUNT = 0;
				markDirty();
				setActivated(false);
			}
		}
	}

	@Override
	public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newSate) {
		return !(newSate.getBlock() instanceof BlockAutoMiner);
	}

}

It seems like I didn't create the tile entity right...

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Posted

So what's the problem?

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.

Posted

I don't see anything wrong, so you're probably going to have to debug this yourself.

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.

Posted (edited)

Video:

package com.Egietje.AutoMiner.entities.tileentities;

import com.Egietje.AutoMiner.blocks.BlockAutoMiner;
import com.Egietje.AutoMiner.init.AMBlocks;

import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ITickable;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;

public class TileEntityAutoMiner extends TileEntity implements ITickable {

	public int FUEL_AMOUNT = 0;
	public boolean ACTIVATED = false;
	
	public TileEntityAutoMiner() {
	}

	public void addFuel(int amount) {
		System.out.println("Before: " + FUEL_AMOUNT);
		System.out.println("Added: " + amount);
		this.FUEL_AMOUNT += amount;
		System.out.println("After: " + FUEL_AMOUNT);
		markDirty();
		IBlockState state = world.getBlockState(pos);
		world.notifyBlockUpdate(pos, state, state, 3);
	}

	public void removeFuel() {
		if (this.FUEL_AMOUNT > 0) {
			this.FUEL_AMOUNT--;
			markDirty();
			IBlockState state = world.getBlockState(pos);
			world.notifyBlockUpdate(pos, state, state, 3);
		}
	}
	
	public boolean isActivated() {
		return ACTIVATED;
	}
	
	public void setActivated(boolean active) {
		ACTIVATED = active;
		IBlockState state = world.getBlockState(pos);
		world.markBlockRangeForRenderUpdate(pos, pos);
		world.notifyBlockUpdate(pos, state, state, 3);
		world.scheduleBlockUpdate(pos,this.getBlockType(),0,0);
		markDirty();
	}

	@Override
	public NBTTagCompound writeToNBT(NBTTagCompound compound) {
		super.writeToNBT(compound);
		compound.setInteger("FuelAmount", this.FUEL_AMOUNT);
		compound.setBoolean("Activated", this.ACTIVATED);
		return compound;
	}

	@Override
	public void readFromNBT(NBTTagCompound compound) {
		super.readFromNBT(compound);
		this.FUEL_AMOUNT = compound.getInteger("FuelAmount");
		this.ACTIVATED = compound.getBoolean("Activated");
	}

	@Override
	public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
		super.onDataPacket(net, pkt);
		handleUpdateTag(pkt.getNbtCompound());
	}

	@Override
	public SPacketUpdateTileEntity getUpdatePacket() {
		return new SPacketUpdateTileEntity(pos, 3, getUpdateTag());
	}

	@Override
	public NBTTagCompound getUpdateTag() {
		return this.writeToNBT(new NBTTagCompound());
	}

	@Override
	public void update() {
		if (ACTIVATED) {
			System.out.println(FUEL_AMOUNT);
			removeFuel();
			if (FUEL_AMOUNT <= 0) {
				FUEL_AMOUNT = 0;
				markDirty();
				setActivated(false);
			}
		}
	}
}
package com.Egietje.AutoMiner.blocks;

import java.util.Random;

import com.Egietje.AutoMiner.entities.tileentities.TileEntityAutoMiner;
import com.Egietje.AutoMiner.init.AMBlocks;
import com.Egietje.AutoMiner.init.AMItems;

import net.minecraft.block.Block;
import net.minecraft.block.BlockHorizontal;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.init.SoundEvents;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBoat;
import net.minecraft.item.ItemDoor;
import net.minecraft.item.ItemHoe;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.item.ItemTool;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityFurnace;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.Mirror;
import net.minecraft.util.Rotation;
import net.minecraft.util.SoundCategory;
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;

public class BlockAutoMiner extends Block {

	public static final PropertyDirection FACING = BlockHorizontal.FACING;
	public static IProperty ACTIVATED = PropertyBool.create("activated");

	public BlockAutoMiner() {
		super(Material.PISTON);
		this.setDefaultState(
				this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVATED, false));
	}

	public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state) {
		this.setDefaultFacing(worldIn, pos, state);
	}

	private void setDefaultFacing(World worldIn, BlockPos pos, IBlockState state) {
		if (!worldIn.isRemote) {
			IBlockState iblockstate = worldIn.getBlockState(pos.north());
			IBlockState iblockstate1 = worldIn.getBlockState(pos.south());
			IBlockState iblockstate2 = worldIn.getBlockState(pos.west());
			IBlockState iblockstate3 = worldIn.getBlockState(pos.east());
			EnumFacing enumfacing = (EnumFacing) state.getValue(FACING);

			if (enumfacing == EnumFacing.NORTH && iblockstate.isFullBlock() && !iblockstate1.isFullBlock()) {
				enumfacing = EnumFacing.SOUTH;
			} else if (enumfacing == EnumFacing.SOUTH && iblockstate1.isFullBlock() && !iblockstate.isFullBlock()) {
				enumfacing = EnumFacing.NORTH;
			} else if (enumfacing == EnumFacing.WEST && iblockstate2.isFullBlock() && !iblockstate3.isFullBlock()) {
				enumfacing = EnumFacing.EAST;
			} else if (enumfacing == EnumFacing.EAST && iblockstate3.isFullBlock() && !iblockstate2.isFullBlock()) {
				enumfacing = EnumFacing.WEST;
			}

			worldIn.setBlockState(pos, state.withProperty(FACING, enumfacing), 2);
		}
	}

	public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY,
			float hitZ, int meta, EntityLivingBase placer) {
		return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
	}

	public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer,
			ItemStack stack) {
		worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing()), 2);
	}

	public IBlockState getStateFromMeta(int meta) {
		EnumFacing enumfacing = EnumFacing.getFront(meta);

		if (enumfacing.getAxis() == EnumFacing.Axis.Y) {
			enumfacing = EnumFacing.NORTH;
		}

		return this.getDefaultState().withProperty(FACING, enumfacing);
	}

	@Override
	public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
		TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
		return state.withProperty(ACTIVATED, te.ACTIVATED);
	}

	public int getMetaFromState(IBlockState state) {
		return ((EnumFacing) state.getValue(FACING)).getIndex();
	}

	public IBlockState withRotation(IBlockState state, Rotation rot) {
		return state.withProperty(FACING, rot.rotate((EnumFacing) state.getValue(FACING)));
	}

	public IBlockState withMirror(IBlockState state, Mirror mirrorIn) {
		return state.withRotation(mirrorIn.toRotation((EnumFacing) state.getValue(FACING)));
	}

	protected BlockStateContainer createBlockState() {
		return new BlockStateContainer(this, new IProperty[] { FACING, ACTIVATED });
	}

	@Override
	@SideOnly(Side.CLIENT)
	public void randomDisplayTick(IBlockState stateIn, World worldIn, BlockPos pos, Random rand) {
		if (worldIn.getTileEntity(pos) instanceof TileEntityAutoMiner) {
			TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
			if (te.ACTIVATED) {
				EnumFacing enumfacing = (EnumFacing) stateIn.getValue(FACING);
				double d0 = (double) pos.getX() + 0.5D;
				double d1 = (double) pos.getY() + 0.5D;
				double d2 = (double) pos.getZ() + 0.5D;
				double d3 = 0.52D;
				double d4 = rand.nextDouble() * 0.6D - 0.3D;

				switch (enumfacing) {
				case WEST:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d3, d1, d2 + d4, 0.0D, 0.0D, 0.0D,
							new int[0]);
					break;
				case EAST:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 - d3, d1, d2 + d4, 0.0D, 0.0D, 0.0D,
							new int[0]);
					break;
				case NORTH:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d4, d1, d2 + d3, 0.0D, 0.0D, 0.0D,
							new int[0]);
					break;
				case SOUTH:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d4, d1, d2 - d3, 0.0D, 0.0D, 0.0D,
							new int[0]);
				default:
					break;
				}
			}
		}
	}

	@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 && hand == EnumHand.MAIN_HAND) {
			if (TileEntityFurnace.isItemFuel(playerIn.getHeldItem(hand))) {
				if (!playerIn.isCreative()) {
					playerIn.getHeldItem(hand).shrink(1);
				}
				if (worldIn.getTileEntity(pos) instanceof TileEntityAutoMiner) {
					TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
					te.addFuel(TileEntityFurnace.getItemBurnTime(playerIn.getHeldItem(hand)));
				}
			} else if (playerIn.getHeldItem(hand).getItem() == AMItems.WRENCH) {
				if (worldIn.getTileEntity(pos) instanceof TileEntityAutoMiner) {
					TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
					if (te.ACTIVATED) {
						te.setActivated(false);
					} else {
						if (te.FUEL_AMOUNT > 0) {
							te.setActivated(true);
						}
					}
				}
			}
			return true;
		}
		return false;

	}

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

	@Override
	public TileEntity createTileEntity(World world, IBlockState state) {
		return new TileEntityAutoMiner();
	}
	
	@Override
	public boolean hasTileEntity(IBlockState state) {
		return true;
	}
}

How can I fix this?

Edited by Kokkie
Forgot to add code

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Posted (edited)

Okay, now I've got another bug.

I've created the code that removes blocks etc. but it seems to be bugged out. What happens is:

  1. I feed the machine fuel.
  2. I start the machine.
  3. Machine destroys first nine blocks.
  4. Machine bugs out and won't go any further and can't be turned off.

I found this is because after running:

					BlockPos position = pos.offset(world.getBlockState(pos).getValue(BlockAutoMiner.FACING));
					world.setBlockState(position, world.getBlockState(pos));
					world.setTileEntity(position, world.getTileEntity(pos));
					world.setBlockToAir(pos)

The world isn't a "server" anymore, so it won't return false when world.isRemote is called.

Does anyone know what could be causing this?

Block class

public class BlockAutoMiner extends Block {

	public static final PropertyDirection FACING = BlockHorizontal.FACING;
	public static IProperty ACTIVATED = PropertyBool.create("activated");

	public BlockAutoMiner() {
		super(Material.PISTON);
		this.setDefaultState(
				this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVATED, false));
	}

	public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state) {
		this.setDefaultFacing(worldIn, pos, state);
	}

	private void setDefaultFacing(World worldIn, BlockPos pos, IBlockState state) {
		if (!worldIn.isRemote) {
			IBlockState iblockstate = worldIn.getBlockState(pos.north());
			IBlockState iblockstate1 = worldIn.getBlockState(pos.south());
			IBlockState iblockstate2 = worldIn.getBlockState(pos.west());
			IBlockState iblockstate3 = worldIn.getBlockState(pos.east());
			EnumFacing enumfacing = (EnumFacing) state.getValue(FACING);

			if (enumfacing == EnumFacing.NORTH && iblockstate.isFullBlock() && !iblockstate1.isFullBlock()) {
				enumfacing = EnumFacing.SOUTH;
			} else if (enumfacing == EnumFacing.SOUTH && iblockstate1.isFullBlock() && !iblockstate.isFullBlock()) {
				enumfacing = EnumFacing.NORTH;
			} else if (enumfacing == EnumFacing.WEST && iblockstate2.isFullBlock() && !iblockstate3.isFullBlock()) {
				enumfacing = EnumFacing.EAST;
			} else if (enumfacing == EnumFacing.EAST && iblockstate3.isFullBlock() && !iblockstate2.isFullBlock()) {
				enumfacing = EnumFacing.WEST;
			}

			worldIn.setBlockState(pos, state.withProperty(FACING, enumfacing), 2);
		}
	}

	public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY,
			float hitZ, int meta, EntityLivingBase placer) {
		return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
	}

	public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer,
			ItemStack stack) {
		worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing()), 2);
	}

	public IBlockState getStateFromMeta(int meta) {
		EnumFacing enumfacing = EnumFacing.getFront(meta);

		if (enumfacing.getAxis() == EnumFacing.Axis.Y) {
			enumfacing = EnumFacing.NORTH;
		}

		return this.getDefaultState().withProperty(FACING, enumfacing);
	}

	@Override
	public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
		TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
		return state.withProperty(ACTIVATED, te.ACTIVATED);
	}

	public int getMetaFromState(IBlockState state) {
		return ((EnumFacing) state.getValue(FACING)).getIndex();
	}

	public IBlockState withRotation(IBlockState state, Rotation rot) {
		return state.withProperty(FACING, rot.rotate((EnumFacing) state.getValue(FACING)));
	}

	public IBlockState withMirror(IBlockState state, Mirror mirrorIn) {
		return state.withRotation(mirrorIn.toRotation((EnumFacing) state.getValue(FACING)));
	}

	protected BlockStateContainer createBlockState() {
		return new BlockStateContainer(this, new IProperty[] { FACING, ACTIVATED });
	}

	@Override
	@SideOnly(Side.CLIENT)
	public void randomDisplayTick(IBlockState stateIn, World worldIn, BlockPos pos, Random rand) {
		if (worldIn.getTileEntity(pos) instanceof TileEntityAutoMiner) {
			TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
			if (te.ACTIVATED) {
				EnumFacing enumfacing = (EnumFacing) stateIn.getValue(FACING);
				double d0 = (double) pos.getX() + 0.5D;
				double d1 = (double) pos.getY() + 0.5D;
				double d2 = (double) pos.getZ() + 0.5D;
				double d3 = 0.52D;
				double d4 = rand.nextDouble() * 0.6D - 0.3D;

				switch (enumfacing) {
				case WEST:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d3, d1, d2 + d4, 0.0D, 0.0D, 0.0D,
							new int[0]);
					break;
				case EAST:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 - d3, d1, d2 + d4, 0.0D, 0.0D, 0.0D,
							new int[0]);
					break;
				case NORTH:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d4, d1, d2 + d3, 0.0D, 0.0D, 0.0D,
							new int[0]);
					break;
				case SOUTH:
					worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d4, d1, d2 - d3, 0.0D, 0.0D, 0.0D,
							new int[0]);
				default:
					break;
				}
			}
		}
	}

	@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) {
			if (hand == EnumHand.MAIN_HAND) {
				if (TileEntityFurnace.isItemFuel(playerIn.getHeldItem(hand))) {
					if (!playerIn.isCreative()) {
						playerIn.getHeldItem(hand).shrink(1);
					}
					if (worldIn.getTileEntity(pos) instanceof TileEntityAutoMiner) {
						TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
						te.addFuel(TileEntityFurnace.getItemBurnTime(playerIn.getHeldItem(hand)));
					}
				} else if (playerIn.getHeldItem(hand).getItem() == AMItems.WRENCH) {
					if (worldIn.getTileEntity(pos) instanceof TileEntityAutoMiner) {
						TileEntityAutoMiner te = (TileEntityAutoMiner) worldIn.getTileEntity(pos);
						if (te.isActivated()) {
							te.setActivated(false);
						} else {
							if (te.FUEL_AMOUNT > 0) {
								te.setActivated(true);
							}
						}
					}
				}
			}
			return true;
		} else {
			if (hand == EnumHand.MAIN_HAND) {
				if (playerIn.getHeldItem(hand).getItem() == AMItems.WRENCH) {
					Minecraft.getMinecraft().player.swingArm(hand);
				}
			}
		}
		return false;

	}

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

	@Override
	public TileEntity createTileEntity(World world, IBlockState state) {
		return new TileEntityAutoMiner();
	}

	@Override
	public boolean hasTileEntity(IBlockState state) {
		return true;
	}
}

Tile entity class

public class TileEntityAutoMiner extends TileEntity implements ITickable {

	public int FUEL_AMOUNT = 0;
	public boolean ACTIVATED = false;
	public boolean UPDATE = false;
	public int TICKS = 0;

	public TileEntityAutoMiner() {
	}

	public void addFuel(int amount) {
		this.FUEL_AMOUNT += amount;
		IBlockState state = world.getBlockState(pos);
		world.markBlockRangeForRenderUpdate(pos, pos);
		markDirty();
	}

	public void removeFuel() {
		if (this.FUEL_AMOUNT > 0) {
			this.FUEL_AMOUNT--;
			IBlockState state = world.getBlockState(pos);
			world.markBlockRangeForRenderUpdate(pos, pos);
			markDirty();
		}
	}

	public boolean isActivated() {
		return ACTIVATED;
	}

	public void setActivated(boolean active) {
		ACTIVATED = active;
		markDirty();
		IBlockState state = world.getBlockState(pos);
		world.markBlockRangeForRenderUpdate(pos, pos);
		world.notifyBlockUpdate(pos, state, state, 3);
		world.scheduleBlockUpdate(pos, this.getBlockType(), 0, 0);
	}

	public void addTick() {
		TICKS++;
		markDirty();
	}

	public void removeTicks() {
		TICKS = 0;
		markDirty();
	}

	@Override
	public NBTTagCompound writeToNBT(NBTTagCompound compound) {
		super.writeToNBT(compound);
		compound.setInteger("FuelAmount", this.FUEL_AMOUNT);
		compound.setBoolean("Activated", this.ACTIVATED);
		compound.setInteger("Ticks", this.TICKS);
		return compound;
	}

	@Override
	public void readFromNBT(NBTTagCompound compound) {
		super.readFromNBT(compound);
		this.FUEL_AMOUNT = compound.getInteger("FuelAmount");
		this.ACTIVATED = compound.getBoolean("Activated");
		this.TICKS = compound.getInteger("Ticks");
	}

	@Override
	public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
		super.onDataPacket(net, pkt);
		handleUpdateTag(pkt.getNbtCompound());
	}

	@Override
	public SPacketUpdateTileEntity getUpdatePacket() {
		return new SPacketUpdateTileEntity(pos, 3, getUpdateTag());
	}

	@Override
	public NBTTagCompound getUpdateTag() {
		return this.writeToNBT(new NBTTagCompound());
	}

	@Override
	public void update() {
		if (ACTIVATED) {
			UPDATE = true;
			removeFuel();
			if (FUEL_AMOUNT <= 0) {
				FUEL_AMOUNT = 0;
				setActivated(false);
				markDirty();
			}
			if (TICKS == 20) {
				if (!world.isRemote) {
					EnumFacing facing_ = (EnumFacing) world.getBlockState(pos).getValue(BlockAutoMiner.FACING);
					int index_ = facing_.getHorizontalIndex();
					int index = index_ == 0 ? index_ + 3 : index_ - 1;
					EnumFacing facing = EnumFacing.getHorizontal(index);
					int index1 = index_ == 3 ? index_ - 3 : index_ + 1;
					EnumFacing facing1 = EnumFacing.getHorizontal(index1);

					BlockPos position = pos.offset(world.getBlockState(pos).getValue(BlockAutoMiner.FACING));
					BlockPos position1 = position.up();
					BlockPos position2 = position.down();
					BlockPos position3 = position.offset(facing);
					BlockPos position4 = position.offset(facing1);
					BlockPos position5 = position3.up();
					BlockPos position6 = position4.up();
					BlockPos position7 = position3.down();
					BlockPos position8 = position4.down();

					ItemStack stack = new ItemStack(world.getBlockState(position).getBlock());
					ItemStack stack1 = new ItemStack(world.getBlockState(position1).getBlock());
					ItemStack stack2 = new ItemStack(world.getBlockState(position2).getBlock());
					ItemStack stack3 = new ItemStack(world.getBlockState(position3).getBlock());
					ItemStack stack4 = new ItemStack(world.getBlockState(position4).getBlock());
					ItemStack stack5 = new ItemStack(world.getBlockState(position5).getBlock());
					ItemStack stack6 = new ItemStack(world.getBlockState(position6).getBlock());
					ItemStack stack7 = new ItemStack(world.getBlockState(position7).getBlock());
					ItemStack stack8 = new ItemStack(world.getBlockState(position8).getBlock());

					world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack));
					world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack1));
					world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack2));
					world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack3));
					world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack4));
					world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack5));
					world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack6));
					world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack7));
					world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack8));

					world.setBlockToAir(position);
					world.setBlockToAir(position1);
					world.setBlockToAir(position2);
					world.setBlockToAir(position3);
					world.setBlockToAir(position4);
					world.setBlockToAir(position5);
					world.setBlockToAir(position6);
					world.setBlockToAir(position7);
					world.setBlockToAir(position8);
				}
			}
			if (TICKS == 40) {
				if (!world.isRemote) {
					BlockPos position = pos.offset(world.getBlockState(pos).getValue(BlockAutoMiner.FACING));
					world.setBlockState(position, world.getBlockState(pos));
					world.setTileEntity(position, world.getTileEntity(pos));
					world.setBlockToAir(pos);
				}
			}

		} else {
			if (UPDATE) {
				IBlockState state = world.getBlockState(pos);
				world.markBlockRangeForRenderUpdate(pos, pos);
			}
			UPDATE = false;
		}
		if (TICKS >= 40) {
			this.removeTicks();
		} else {
			this.addTick();
		}
	}

}

Also, no errors in the console.

Edited by Kokkie

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Posted
3 hours ago, Kokkie said:

Machine bugs out and won't go any further and can't be turned off.

"Bugs out" doesn't mean anything. Step through in the debugger. Tell us what really happens.

The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.

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

    • Use a Custom Launcher like Technic Launcher and search for a "Clean Forge 1.12.2" modpack and use this as working base
    • I've recently tried to play Minecraft in 1.12 version to use some old mods, but every time I try to start the game, no matter which version of Forge for Minecraft 1.12 I choose to download, the Launcher gives me the following error message: Failed to download file. Name: 1.12-forge1.12-14.21.1.2443.jar URL: https://s3.amazonaws.com/Minecraft.Download/versions/1.12- forge1.12-14.21.1.2443/1.12-forge1.12-14.21.1.2443.jar Filename on disk: 1.12-forge1.12-14.21.1.2443.jar Path: C:\Users\Diego\AppData\Roaming\.minecraft\versions\1.12- forge1.12-14.21.1.2443\1.12-forge1.12-14.21.1.2443.jar Exists: Nonexistent I don't know how to fix it.
    • Hi!me and my friend made a server on forge,but everytime we trying to acess it we get this error : https://imgur.com/a/xVASmHQ there's a list of all mods we have installed :  https://imgur.com/hhSnYLj we tried to contact server provider,but they have no idea how to fix it
    • Are you in creative mode? Are other players in creative mode?
    • ---- Minecraft Crash Report ---- // I let you down. Sorry Time: 2024-11-26 03:19:38 Description: Unexpected error net.minecraftforge.fml.ModLoadingException: Advanced Mining Dimension (mining_dimension) encountered an error during the done event phase §7java.lang.NullPointerException: Registry Object not present: mining_dimension:teleporter     at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:118) ~[javafmllanguage-1.20.1-47.3.0.jar%23530!/:?] {}     at net.minecraftforge.fml.ModLoader.lambda$postEvent$29(ModLoader.java:326) ~[fmlcore-1.20.1-47.3.0.jar%23529!/:?] {}     at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}     at net.minecraftforge.fml.ModList.forEachModInOrder(ModList.java:227) ~[fmlcore-1.20.1-47.3.0.jar%23529!/:?] {}     at net.minecraftforge.fml.ModLoader.postEvent(ModLoader.java:326) ~[fmlcore-1.20.1-47.3.0.jar%23529!/:?] {}     at net.minecraftforge.common.ForgeHooks.onCreativeModeTabBuildContents(ForgeHooks.java:1633) ~[forge-1.20.1-47.3.0-universal.jar%23533!/:?] {re:classloading,pl:rei_plugin_compatibilities:B}     at net.minecraft.world.item.CreativeModeTab.m_269498_(CreativeModeTab.java:129) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:APP:mixins.ipnext.json:MixinItemGroup,pl:mixin:A}     at net.minecraft.world.item.CreativeModeTabs.m_268957_(CreativeModeTabs.java:1696) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B}     at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ~[?:?] {}     at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[?:?] {}     at java.util.Iterator.forEachRemaining(Iterator.java:133) ~[?:?] {re:mixin}     at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845) ~[?:?] {}     at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?] {}     at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?] {}     at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[?:?] {}     at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[?:?] {}     at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?] {}     at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[?:?] {}     at net.minecraft.world.item.CreativeModeTabs.m_269421_(CreativeModeTabs.java:1695) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B}     at net.minecraft.world.item.CreativeModeTabs.m_269226_(CreativeModeTabs.java:1710) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B}     at net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen.<init>(CreativeModeInventoryScreen.java:86) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.inventory.InventoryScreen.m_7856_(InventoryScreen.java:48) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:APP:patchouli_xplat.mixins.json:client.MixinInventoryScreen,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.Screen.m_6575_(Screen.java:321) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:computing_frames,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:APP:balm.mixins.json:ScreenAccessor,pl:mixin:APP:controlling.mixins.json:AccessScreen,pl:mixin:APP:patchouli_xplat.mixins.json:client.AccessorScreen,pl:mixin:APP:configured.common.mixins.json:client.ScreenMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91152_(Minecraft.java:1007) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91279_(Minecraft.java:1928) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91398_(Minecraft.java:1795) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1112) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:718) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:218) ~[forge-47.3.0.jar:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:rei_plugin_compatibilities:B,pl:mixin:APP:smoothboot.mixins.json:client.MainMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}     at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:111) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.clientService(CommonLaunchHandler.java:99) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$makeService$0(CommonClientLaunchHandler.java:25) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] {} Caused by: java.lang.NullPointerException: Registry Object not present: mining_dimension:teleporter     at java.util.Objects.requireNonNull(Objects.java:336) ~[?:?] {re:mixin}     at net.minecraftforge.registries.RegistryObject.get(RegistryObject.java:204) ~[forge-1.20.1-47.3.0-universal.jar%23533!/:?] {re:mixin,re:classloading,pl:rei_plugin_compatibilities:B}     at de.maxhenkel.miningdimension.events.CreativeTabEvents.onCreativeModeTabBuildContents(CreativeTabEvents.java:14) ~[mining-dimension-forge-1.20.1-1.1.0.jar%23459!/:1.20.1-1.1.0] {re:classloading,pl:rei_plugin_compatibilities:B}     at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:260) ~[eventbus-6.0.5.jar%2387!/:?] {}     at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:252) ~[eventbus-6.0.5.jar%2387!/:?] {}     at net.minecraftforge.eventbus.EventBus.post(EventBus.java:315) ~[eventbus-6.0.5.jar%2387!/:?] {}     at net.minecraftforge.eventbus.EventBus.post(EventBus.java:296) ~[eventbus-6.0.5.jar%2387!/:?] {}     at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:114) ~[javafmllanguage-1.20.1-47.3.0.jar%23530!/:?] {}     ... 43 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Suspected Mod:      Advanced Mining Dimension (mining_dimension), Version: 1.20.1-1.1.0         Issue tracker URL: https://github.com/henkelmax/advanced-mining-dimension/issues         at TRANSFORMER/[email protected]/de.maxhenkel.miningdimension.events.CreativeTabEvents.onCreativeModeTabBuildContents(CreativeTabEvents.java:14) Stacktrace:     at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:118) ~[javafmllanguage-1.20.1-47.3.0.jar%23530!/:?] {}     at net.minecraftforge.fml.ModLoader.lambda$postEvent$29(ModLoader.java:326) ~[fmlcore-1.20.1-47.3.0.jar%23529!/:?] {}     at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}     at net.minecraftforge.fml.ModList.forEachModInOrder(ModList.java:227) ~[fmlcore-1.20.1-47.3.0.jar%23529!/:?] {}     at net.minecraftforge.fml.ModLoader.postEvent(ModLoader.java:326) ~[fmlcore-1.20.1-47.3.0.jar%23529!/:?] {}     at net.minecraftforge.common.ForgeHooks.onCreativeModeTabBuildContents(ForgeHooks.java:1633) ~[forge-1.20.1-47.3.0-universal.jar%23533!/:?] {re:classloading,pl:rei_plugin_compatibilities:B}     at net.minecraft.world.item.CreativeModeTab.m_269498_(CreativeModeTab.java:129) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:APP:mixins.ipnext.json:MixinItemGroup,pl:mixin:A}     at net.minecraft.world.item.CreativeModeTabs.m_268957_(CreativeModeTabs.java:1696) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B}     at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ~[?:?] {}     at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[?:?] {}     at java.util.Iterator.forEachRemaining(Iterator.java:133) ~[?:?] {re:mixin}     at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845) ~[?:?] {}     at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?] {}     at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?] {}     at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[?:?] {}     at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[?:?] {}     at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?] {}     at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[?:?] {}     at net.minecraft.world.item.CreativeModeTabs.m_269421_(CreativeModeTabs.java:1695) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B}     at net.minecraft.world.item.CreativeModeTabs.m_269226_(CreativeModeTabs.java:1710) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B}     at net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen.<init>(CreativeModeInventoryScreen.java:86) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.inventory.InventoryScreen.m_7856_(InventoryScreen.java:48) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:APP:patchouli_xplat.mixins.json:client.MixinInventoryScreen,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.Screen.m_6575_(Screen.java:321) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:computing_frames,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:APP:balm.mixins.json:ScreenAccessor,pl:mixin:APP:controlling.mixins.json:AccessScreen,pl:mixin:APP:patchouli_xplat.mixins.json:client.AccessorScreen,pl:mixin:APP:configured.common.mixins.json:client.ScreenMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91152_(Minecraft.java:1007) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91279_(Minecraft.java:1928) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:A,pl:runtimedistcleaner:A} -- Affected level -- Details:     All players: 2 total; [LocalPlayer['Etherial_Kat'/65998, l='ClientLevel', x=680.94, y=64.00, z=859.95], RemotePlayer['luv_tyqical'/1898, l='ClientLevel', x=684.28, y=63.00, z=874.20]]     Chunk stats: 729, 531     Level dimension: minecraft:overworld     Level spawn location: World: (587,67,817), Section: (at 11,3,1 in 36,4,51; chunk contains blocks 576,-64,816 to 591,319,831), Region: (1,1; contains chunks 32,32 to 63,63, blocks 512,-64,512 to 1023,319,1023)     Level time: 19067528 game time, 30325 day time     Server brand: forge     Server type: Non-integrated multiplayer server Stacktrace:     at net.minecraft.client.multiplayer.ClientLevel.m_6026_(ClientLevel.java:455) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,xf:fml:openpartiesandclaims:xaero_pac_clientlevel,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,xf:fml:openpartiesandclaims:xaero_pac_clientlevel,pl:mixin:APP:embeddium.mixins.json:features.render.world.ClientLevelMixin,pl:mixin:APP:immersive_melodies.mixin.json:ClientWorldMixin,pl:mixin:APP:dynamiclightsreforged.mixins.json:ClientWorldMixin,pl:mixin:APP:supplementaries-common.mixins.json:ClientLevelMixin,pl:mixin:APP:mixins.oculus.vertexformat.json:block_rendering.MixinClientLevel,pl:mixin:APP:starlight.mixins.json:client.world.ClientLevelMixin,pl:mixin:APP:entityculling.mixins.json:ClientWorldMixin,pl:mixin:APP:canary.mixins.json:chunk.entity_class_groups.ClientLevelMixin,pl:mixin:APP:architectury.mixins.json:MixinClientLevel,pl:mixin:APP:ichunutil.mixins.json:client.ClientLevelMixin,pl:mixin:APP:blueprint.mixins.json:client.ClientLevelMixin,pl:mixin:APP:ribbits.mixins.json:client.accessor.ClientLevelAccessor,pl:mixin:APP:embeddium.mixins.json:core.world.biome.ClientWorldMixin,pl:mixin:APP:embeddium.mixins.json:core.world.map.ClientWorldMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91354_(Minecraft.java:2319) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:740) ~[client-1.20.1-20230612.114412-srg.jar%23528!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:rei_plugin_compatibilities:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:218) ~[forge-47.3.0.jar:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:rei_plugin_compatibilities:B,pl:mixin:APP:smoothboot.mixins.json:client.MainMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}     at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:111) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.clientService(CommonLaunchHandler.java:99) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$makeService$0(CommonClientLaunchHandler.java:25) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] {} -- Last reload -- Details:     Reload number: 1     Reload reason: initial     Finished: Yes     Packs: vanilla, mod_resources, Moonlight Mods Dynamic Assets, file/Flowering Grass And Roots.zip, bushy_leaves, file/FreshAnimations_v1.9.2.zip, file/MineLoL 1.21+ v0.15.2 [64x] - Patreon.zip, file/gui-kumikitty-cute n' cuddly.zip -- System Details -- Details:     Minecraft Version: 1.20.1     Minecraft Version ID: 1.20.1     Operating System: Windows 11 (amd64) version 10.0     Java Version: 17.0.8, Microsoft     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft     Memory: 579067952 bytes (552 MiB) / 4294967296 bytes (4096 MiB) up to 4294967296 bytes (4096 MiB)     CPUs: 16     Processor Vendor: AuthenticAMD     Processor Name: AMD Ryzen 7 7800X3D 8-Core Processor                Identifier: AuthenticAMD Family 25 Model 97 Stepping 2     Microarchitecture: Zen 3     Frequency (GHz): 4.19     Number of physical packages: 1     Number of physical CPUs: 8     Number of logical CPUs: 16     Graphics card #0 name: NVIDIA GeForce RTX 4070 Ti SUPER     Graphics card #0 vendor: NVIDIA (0x10de)     Graphics card #0 VRAM (MB): 4095.00     Graphics card #0 deviceId: 0x2705     Graphics card #0 versionInfo: DriverVersion=32.0.15.6603     Graphics card #1 name: AMD Radeon(TM) Graphics     Graphics card #1 vendor: Advanced Micro Devices, Inc. (0x1002)     Graphics card #1 VRAM (MB): 512.00     Graphics card #1 deviceId: 0x164e     Graphics card #1 versionInfo: DriverVersion=32.0.12019.1028     Memory slot #0 capacity (MB): 16384.00     Memory slot #0 clockSpeed (GHz): 4.80     Memory slot #0 type: Unknown     Memory slot #1 capacity (MB): 16384.00     Memory slot #1 clockSpeed (GHz): 4.80     Memory slot #1 type: Unknown     Virtual memory max (MB): 50293.89     Virtual memory used (MB): 29461.90     Swap memory total (MB): 18432.00     Swap memory used (MB): 72.26     JVM Flags: 4 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx4096m -Xms256m     Loaded Shaderpack: ComplementaryUnbound_r5.2.1.zip         Profile: HIGH (+0 options changed by user)     Launched Version: forge-47.3.0     Backend library: LWJGL version 3.3.1 build 7     Backend API: NVIDIA GeForce RTX 4070 Ti SUPER/PCIe/SSE2 GL version 4.6.0 NVIDIA 566.03, NVIDIA Corporation     Window size: 2560x1351     GL Caps: Using framebuffer using OpenGL 3.2     GL debug messages:      Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'forge'     Type: Client (map_client.txt)     Graphics mode: fancy     Resource Packs: vanilla, mod_resources, Moonlight Mods Dynamic Assets, file/Flowering Grass And Roots.zip, bushy_leaves, file/FreshAnimations_v1.9.2.zip, file/MineLoL 1.21+ v0.15.2 [64x] - Patreon.zip (incompatible), file/gui-kumikitty-cute n' cuddly.zip (incompatible)     Current Language: en_us     CPU: 16x AMD Ryzen 7 7800X3D 8-Core Processor      ModLauncher: 10.0.9+10.0.9+main.dcd20f30     ModLauncher launch target: forgeclient     ModLauncher naming: srg     ModLauncher services:          mixin-0.8.5.jar mixin PLUGINSERVICE          eventbus-6.0.5.jar eventbus PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar slf4jfixer PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar object_holder_definalize PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar runtime_enum_extender PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar capability_token_subclass PLUGINSERVICE          accesstransformers-8.0.4.jar accesstransformer PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar runtimedistcleaner PLUGINSERVICE          modlauncher-10.0.9.jar mixin TRANSFORMATIONSERVICE          modlauncher-10.0.9.jar fml TRANSFORMATIONSERVICE      FML Language Providers:          [email protected]         [email protected]         javafml@null         lowcodefml@null     Mod List:          dynamiclightsreforged-1.20.1_v1.6.0.jar           |Rubidium Dynamic Lights       |dynamiclightsreforged         |1.20.1_v1.6.0       |DONE      |Manifest: NOSIGNATURE         YungsBetterDungeons-1.20-Forge-4.0.4.jar          |YUNG's Better Dungeons        |betterdungeons                |1.20-Forge-4.0.4    |DONE      |Manifest: NOSIGNATURE         supermartijn642configlib-1.1.8-forge-mc1.20.jar   |SuperMartijn642's Config Libra|supermartijn642configlib      |1.1.8               |DONE      |Manifest: NOSIGNATURE         open-parties-and-claims-forge-1.20.1-0.23.2.jar   |Open Parties and Claims       |openpartiesandclaims          |0.23.2              |DONE      |Manifest: NOSIGNATURE         scena-forge-1.0.103.jar                           |Scena                         |scena                         |1.0.103             |DONE      |Manifest: NOSIGNATURE         hamsters-forge-1.0.3-1.20.1.jar                   |Hamsters                      |hamsters                      |1.20.1-1.0.3        |DONE      |Manifest: NOSIGNATURE         mcw-windows-2.2.1-mc1.20.1forge.jar               |Macaw's Windows               |mcwwindows                    |2.2.1               |DONE      |Manifest: NOSIGNATURE         aquaculture_delight_1.0.0_forge_1.20.1.jar        |Aquaculture Delight           |aquaculturedelight            |1.0.0               |DONE      |Manifest: NOSIGNATURE         duckling-3.0.0-forge.jar                          |Duckling                      |duckling                      |3.0.0               |DONE      |Manifest: NOSIGNATURE         YungsApi-1.20-Forge-4.0.5.jar                     |YUNG's API                    |yungsapi                      |1.20-Forge-4.0.5    |DONE      |Manifest: NOSIGNATURE         BotanyPotsTiers-Forge-1.20.1-6.0.1.jar            |BotanyPotsTiers               |botanypotstiers               |6.0.1               |DONE      |Manifest: NOSIGNATURE         balm-forge-1.20.1-7.3.6-all.jar                   |Balm                          |balm                          |7.3.6               |DONE      |Manifest: NOSIGNATURE         exposure-1.20.1-1.7.2-forge.jar                   |Exposure                      |exposure                      |1.7.2               |DONE      |Manifest: NOSIGNATURE         cloth-config-11.1.118-forge.jar                   |Cloth Config v10 API          |cloth_config                  |11.1.118            |DONE      |Manifest: NOSIGNATURE         MOAdecor BATH 1.20.1.jar                          |MOA DECOR: BATH               |moa_decor_bath                |1.20.1              |DONE      |Manifest: NOSIGNATURE         supplementaries-1.20-2.8.17.jar                   |Supplementaries               |supplementaries               |1.20-2.8.17         |DONE      |Manifest: NOSIGNATURE         refinedstorage-1.12.4.jar                         |Refined Storage               |refinedstorage                |1.12.4              |DONE      |Manifest: NOSIGNATURE         embeddium-0.3.23+mc1.20.1.jar                     |Embeddium                     |embeddium                     |0.3.23+mc1.20.1     |DONE      |Manifest: NOSIGNATURE         corpse-forge-1.20.1-1.0.12.jar                    |Corpse                        |corpse                        |1.20.1-1.0.12       |DONE      |Manifest: NOSIGNATURE         BotanyTrees-Forge-1.20.1-9.0.11.jar               |BotanyTrees                   |botanytrees                   |9.0.11              |DONE      |Manifest: NOSIGNATURE         mcw-trapdoors-1.1.3-mc1.20.1forge.jar             |Macaw's Trapdoors             |mcwtrpdoors                   |1.1.3               |DONE      |Manifest: NOSIGNATURE         supermartijn642corelib-1.1.17-forge-mc1.20.1.jar  |SuperMartijn642's Core Lib    |supermartijn642corelib        |1.1.17              |DONE      |Manifest: NOSIGNATURE         MOAdecor TOYS 1.20.1.jar                          |MOA DECOR: TOYS               |moa_decor_toys                |1.20.1              |DONE      |Manifest: NOSIGNATURE         Botania-1.20.1-446-FORGE.jar                      |Botania                       |botania                       |1.20.1-446-FORGE    |DONE      |Manifest: NOSIGNATURE         fairylights-7.0.0-1.20.1.jar                      |Fairy Lights                  |fairylights                   |7.0.0               |DONE      |Manifest: NOSIGNATURE         mcwfencesbop-1.20-1.1.jar                         |Macaw's Fences - BOP          |mcwfencesbop                  |1.20-1.1            |DONE      |Manifest: NOSIGNATURE         cluttered-2.1-1.20.1.jar                          |Cluttered                     |luphieclutteredmod            |2.1                 |DONE      |Manifest: NOSIGNATURE         curios-forge-5.9.1+1.20.1.jar                     |Curios API                    |curios                        |5.9.1+1.20.1        |DONE      |Manifest: NOSIGNATURE         corail_woodcutter-1.20.1-3.0.4.jar                |Corail Woodcutter             |corail_woodcutter             |3.0.4               |DONE      |Manifest: NOSIGNATURE         oculus-mc1.20.1-1.7.0.jar                         |Oculus                        |oculus                        |1.7.0               |DONE      |Manifest: NOSIGNATURE         Searchables-forge-1.20.1-1.0.3.jar                |Searchables                   |searchables                   |1.0.3               |DONE      |Manifest: NOSIGNATURE         Jewelry-1.6.4.jar                                 |Jewelcraft                    |jewelcraft                    |1.6.4               |DONE      |Manifest: NOSIGNATURE         FramedBlocks-9.3.0.jar                            |FramedBlocks                  |framedblocks                  |9.3.0               |DONE      |Manifest: NOSIGNATURE         mcw-roofs-2.3.0-mc1.20.1forge.jar                 |Macaw's Roofs                 |mcwroofs                      |2.3.0               |DONE      |Manifest: NOSIGNATURE         cfm-forge-1.20.1-7.0.0-pre36.jar                  |MrCrayfish's Furniture Mod    |cfm                           |7.0.0-pre36         |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         mcw-furniture-3.2.2-mc1.20.1forge.jar             |Macaw's Furniture             |mcwfurnitures                 |3.2.2               |DONE      |Manifest: NOSIGNATURE         Adorn-5.0.1+1.20.1-forge.jar                      |Adorn                         |adorn                         |5.0.1+1.20.1        |DONE      |Manifest: NOSIGNATURE         JadeAddons-1.20.1-forge-5.2.2.jar                 |Jade Addons                   |jadeaddons                    |5.2.2               |DONE      |Manifest: NOSIGNATURE         MOAdecor ART 1.20.1.jar                           |MOA DECOR: ART                |moa_decor_art                 |1.20.1              |DONE      |Manifest: NOSIGNATURE         FastLeafDecay-32.jar                              |Fast Leaf Decay               |fastleafdecay                 |32                  |DONE      |Manifest: NOSIGNATURE         CodeChickenLib-1.20.1-4.4.0.512-universal.jar     |CodeChicken Lib               |codechickenlib                |4.4.0.512           |DONE      |Manifest: 31:e6:db:63:47:4a:6e:e0:0a:2c:11:d1:76:db:4e:82:ff:56:2d:29:93:d2:e5:02:bd:d3:bd:9d:27:47:a5:71         YungsBetterMineshafts-1.20-Forge-4.0.4.jar        |YUNG's Better Mineshafts      |bettermineshafts              |1.20-Forge-4.0.4    |DONE      |Manifest: NOSIGNATURE         EnchantingInfuser-v8.0.3-1.20.1-Forge.jar         |Enchanting Infuser            |enchantinginfuser             |8.0.3               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         mcw-lights-1.1.0-mc1.20.1forge.jar                |Macaw's Lights and Lamps      |mcwlights                     |1.1.0               |DONE      |Manifest: NOSIGNATURE         witchywearables-1.1.1-all.jar                     |Witchy Wearables              |witchywearables               |1.1.1               |DONE      |Manifest: NOSIGNATURE         SmartBrainLib-forge-1.20.1-1.15.jar               |SmartBrainLib                 |smartbrainlib                 |1.15                |DONE      |Manifest: NOSIGNATURE         Fastload-Reforged-mc1.20.1-3.4.0.jar              |Fastload-Reforged             |fastload                      |3.4.0               |DONE      |Manifest: NOSIGNATURE         MOAdecor GARDEN 1.20.1.jar                        |MOA DECOR: GARDEN             |moa_decor_garden_             |1.20.1              |DONE      |Manifest: NOSIGNATURE         rechiseled-1.1.6-forge-mc1.20.jar                 |Rechiseled                    |rechiseled                    |1.1.6               |DONE      |Manifest: NOSIGNATURE         harvest-with-ease-forge-1.20.1-9.0.1.jar          |Harvest with ease             |harvest_with_ease             |9.0.1               |DONE      |Manifest: NOSIGNATURE         MG_Secrets_of_mermaids_1.0.2_1.20.1.jar           |Monsters&Girls - Secrets of Me|mg_secrets_of_mermaids        |1.0.2               |DONE      |Manifest: NOSIGNATURE         treeharvester-1.20.1-8.7.jar                      |Tree Harvester                |treeharvester                 |8.7                 |DONE      |Manifest: NOSIGNATURE         goblintraders-forge-1.20.1-1.9.3.jar              |Goblin Traders                |goblintraders                 |1.9.3               |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         immersive_weathering-1.20.1-2.0.1-forge.jar       |Immersive Weathering          |immersive_weathering          |1.20.1-2.0.1        |DONE      |Manifest: NOSIGNATURE         NaturesCompass-1.20.1-1.11.2-forge.jar            |Nature's Compass              |naturescompass                |1.20.1-1.11.2-forge |DONE      |Manifest: NOSIGNATURE         smarterfarmers-1.20-1.8.3.jar                     |Smarter Farmers               |smarterfarmers                |1.20-1.8.3          |DONE      |Manifest: NOSIGNATURE         SereneSeasons-1.20.1-9.0.0.46.jar                 |Serene Seasons                |sereneseasons                 |9.0.0.46            |DONE      |Manifest: NOSIGNATURE         jumpboat-1.20.0-1.0.5.jar                         |Jumpy Boats                   |jumpboat                      |1.20.0-1.0.5        |DONE      |Manifest: NOSIGNATURE         BotanyPots-Forge-1.20.1-13.0.35.jar               |BotanyPots                    |botanypots                    |13.0.35             |DONE      |Manifest: NOSIGNATURE         starlight-1.1.2+forge.1cda73c.jar                 |Starlight                     |starlight                     |1.1.2+forge.1cda73c |DONE      |Manifest: NOSIGNATURE         fusion-1.1.1-forge-mc1.20.1.jar                   |Fusion                        |fusion                        |1.1.1               |DONE      |Manifest: NOSIGNATURE         puzzlesaccessapi-forge-8.0.7.jar                  |Puzzles Access Api            |puzzlesaccessapi              |8.0.7               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         forge-1.20.1-47.3.0-universal.jar                 |Forge                         |forge                         |47.3.0              |DONE      |Manifest: 84:ce:76:e8:45:35:e4:0e:63:86:df:47:59:80:0f:67:6c:c1:5f:6e:5f:4d:b3:54:47:1a:9f:7f:ed:5e:f2:90         mcw-paths-1.0.5-1.20.1forge.jar                   |Macaw's Paths and Pavings     |mcwpaths                      |1.0.5               |DONE      |Manifest: NOSIGNATURE         ironchest-1.20.1-14.4.4.jar                       |Iron Chests                   |ironchest                     |1.20.1-14.4.4       |DONE      |Manifest: NOSIGNATURE         client-1.20.1-20230612.114412-srg.jar             |Minecraft                     |minecraft                     |1.20.1              |DONE      |Manifest: a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f         RPG_Style_more_Weapons_9.1_1.20.1.jar             |RPG_style_More_Weapons        |rpgsmw                        |9.11.20.1           |DONE      |Manifest: NOSIGNATURE         cofh_core-1.20.1-11.0.2.56.jar                    |CoFH Core                     |cofh_core                     |11.0.2              |DONE      |Manifest: NOSIGNATURE         thermal_core-1.20.1-11.0.6.24.jar                 |Thermal Series                |thermal                       |11.0.6              |DONE      |Manifest: NOSIGNATURE         redstone_arsenal-1.20.1-8.0.1.24.jar              |Redstone Arsenal              |redstone_arsenal              |8.0.1               |DONE      |Manifest: NOSIGNATURE         thermal_foundation-1.20.1-11.0.6.70.jar           |Thermal Foundation            |thermal_foundation            |11.0.6              |DONE      |Manifest: NOSIGNATURE         TerraBlender-forge-1.20.1-3.0.1.7.jar             |TerraBlender                  |terrablender                  |3.0.1.7             |DONE      |Manifest: NOSIGNATURE         BiomesOPlenty-1.20.1-18.0.0.592.jar               |Biomes O' Plenty              |biomesoplenty                 |18.0.0.592          |DONE      |Manifest: NOSIGNATURE         MouseTweaks-forge-mc1.20.1-2.25.1.jar             |Mouse Tweaks                  |mousetweaks                   |2.25.1              |DONE      |Manifest: NOSIGNATURE         commonality-1.20.1-7.0.0.jar                      |Commonality                   |commonality                   |7.0.0               |DONE      |Manifest: NOSIGNATURE         pamhc2crops-1.20-1.0.3.jar                        |Pam's HarvestCraft 2 - Crops  |pamhc2crops                   |1.0.3               |DONE      |Manifest: NOSIGNATURE         Oh-The-Trees-Youll-Grow-forge-1.20.1-1.3.1.jar    |Oh The Trees You'll Grow      |ohthetreesyoullgrow           |1.20.1-1.3.1        |DONE      |Manifest: NOSIGNATURE         spectrelib-forge-0.13.15+1.20.1.jar               |SpectreLib                    |spectrelib                    |0.13.15+1.20.1      |DONE      |Manifest: NOSIGNATURE         Corgilib-Forge-1.20.1-4.0.3.2.jar                 |CorgiLib                      |corgilib                      |4.0.3.2             |DONE      |Manifest: NOSIGNATURE         Ding-1.20.1-Forge-1.5.0.jar                       |Ding                          |ding                          |1.5.0               |DONE      |Manifest: ae:67:c5:55:fb:7e:f3:4e:5c:71:f4:50:9e:df:a2:b0:32:86:cf:09:f2:fe:9b:db:94:3b:09:88:a2:3d:91:1f         astikorcarts-redux-1.20.1-1.1.7.jar               |AstikorCarts Redux            |astikorcarts                  |1.1.7               |DONE      |Manifest: NOSIGNATURE         kffmod-4.11.0.jar                                 |Kotlin For Forge              |kotlinforforge                |4.11.0              |DONE      |Manifest: NOSIGNATURE         ecologics-forge-1.20.1-2.2.0.jar                  |Ecologics                     |ecologics                     |2.2.0               |DONE      |Manifest: NOSIGNATURE         pamhc2foodcore-1.20.4-1.0.5.jar                   |Pam's HarvestCraft 2 - Food Co|pamhc2foodcore                |1.0.5               |DONE      |Manifest: NOSIGNATURE         polymorph-forge-0.49.5+1.20.1.jar                 |Polymorph                     |polymorph                     |0.49.5+1.20.1       |DONE      |Manifest: NOSIGNATURE         entityculling-forge-1.6.6-mc1.20.1.jar            |EntityCulling                 |entityculling                 |1.6.6               |DONE      |Manifest: NOSIGNATURE         backpacked-forge-1.20.1-2.2.5.jar                 |Backpacked                    |backpacked                    |2.2.5               |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         canary-mc1.20.1-0.3.3.jar                         |Canary                        |canary                        |0.3.3               |DONE      |Manifest: NOSIGNATURE         FastFurnace-1.20.1-8.0.2.jar                      |FastFurnace                   |fastfurnace                   |8.0.2               |DONE      |Manifest: NOSIGNATURE         appleskin-forge-mc1.20.1-2.5.1.jar                |AppleSkin                     |appleskin                     |2.5.1+mc1.20.1      |DONE      |Manifest: NOSIGNATURE         Vampirism-1.20.1-1.10.11.jar                      |Vampirism                     |vampirism                     |1.10.11             |DONE      |Manifest: NOSIGNATURE         lootr-forge-1.20-0.7.34.86.jar                    |Lootr                         |lootr                         |0.7.34.85           |DONE      |Manifest: NOSIGNATURE         connectedglass-1.1.12-forge-mc1.20.1.jar          |Connected Glass               |connectedglass                |1.1.12              |DONE      |Manifest: NOSIGNATURE         rubidium-extra-0.5.4.3+mc1.20.1-build.121.jar     |Embeddium Extra               |embeddium_extra               |0.5.4.3+mc1.20.1-bui|DONE      |Manifest: NOSIGNATURE         PuzzlesLib-v8.1.25-1.20.1-Forge.jar               |Puzzles Lib                   |puzzleslib                    |8.1.25              |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         Aquaculture-1.20.1-2.5.1.jar                      |Aquaculture 2                 |aquaculture                   |2.5.1               |DONE      |Manifest: NOSIGNATURE         FriendlyFire-Forge-1.20.1-18.0.7.jar              |FriendlyFire                  |friendlyfire                  |18.0.7              |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         immersive_melodies-0.3.0+1.20.1-forge.jar         |Immersive Melodies            |immersive_melodies            |0.3.0+1.20.1        |DONE      |Manifest: NOSIGNATURE         cosmeticarmorreworked-1.20.1-v1a.jar              |CosmeticArmorReworked         |cosmeticarmorreworked         |1.20.1-v1a          |DONE      |Manifest: 5e:ed:25:99:e4:44:14:c0:dd:89:c1:a9:4c:10:b5:0d:e4:b1:52:50:45:82:13:d8:d0:32:89:67:56:57:01:53         MOAdecor ELECTRONICS 1.20.1.A.jar                 |MOA: ELECTRONICS              |moa_decor_electronics         |1.20.1.             |DONE      |Manifest: NOSIGNATURE         kuma-api-forge-20.1.8+1.20.1.jar                  |KumaAPI                       |kuma_api                      |20.1.8              |DONE      |Manifest: NOSIGNATURE         butterflies-4.0.0-for-1.20.1.jar                  |Butterfly Mod                 |butterflies                   |4.0.0               |DONE      |Manifest: NOSIGNATURE         geckolib-forge-1.20.1-4.4.7.jar                   |GeckoLib 4                    |geckolib                      |4.4.7               |DONE      |Manifest: NOSIGNATURE         crittersandcompanions-1.20.1-2.1.6.jar            |Critters and Companions       |crittersandcompanions         |1.20.1-2.1.6        |DONE      |Manifest: NOSIGNATURE         beautify-2.0.2.jar                                |Beautify                      |beautify                      |2.0.2               |DONE      |Manifest: NOSIGNATURE         sophisticatedcore-1.20.1-0.7.11.799.jar           |Sophisticated Core            |sophisticatedcore             |0.7.11.799          |DONE      |Manifest: NOSIGNATURE         glassential-forge-1.20.1-2.0.0.jar                |Glassential                   |glassential                   |1.20.1-2.0.0        |DONE      |Manifest: NOSIGNATURE         mcwfurnituresbop-1.20-1.1.jar                     |Macaw's Furnitures - BOP      |mcwfurnituresbop              |1.20-1.1            |DONE      |Manifest: NOSIGNATURE         cookingforblockheads-forge-1.20.1-16.0.6.jar      |CookingForBlockheads          |cookingforblockheads          |16.0.6              |DONE      |Manifest: NOSIGNATURE         Controlling-forge-1.20.1-12.0.2.jar               |Controlling                   |controlling                   |12.0.2              |DONE      |Manifest: NOSIGNATURE         Placebo-1.20.1-8.6.2.jar                          |Placebo                       |placebo                       |8.6.2               |DONE      |Manifest: NOSIGNATURE         REIPluginCompatibilities-forge-12.0.93.jar        |REI Plugin Compatibilities    |rei_plugin_compatibilities    |12.0.93             |DONE      |Manifest: NOSIGNATURE         mixinextras-forge-0.2.0-beta.6.jar                |MixinExtras                   |mixinextras                   |0.2.0-beta.6        |DONE      |Manifest: NOSIGNATURE         cobweb-forge-1.20.1-1.0.0.jar                     |Cobweb                        |cobweb                        |1.0.0               |DONE      |Manifest: NOSIGNATURE         Bookshelf-Forge-1.20.1-20.2.13.jar                |Bookshelf                     |bookshelf                     |20.2.13             |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         sophisticatedbackpacks-1.20.1-3.20.17.1150.jar    |Sophisticated Backpacks       |sophisticatedbackpacks        |3.20.17.1150        |DONE      |Manifest: NOSIGNATURE         Twigs-1.20.1-3.1.0.jar                            |Twigs                         |twigs                         |1.20.1-3.1.1        |DONE      |Manifest: NOSIGNATURE         mcw-doors-1.1.1forge-mc1.20.1.jar                 |Macaw's Doors                 |mcwdoors                      |1.1.1               |DONE      |Manifest: NOSIGNATURE         zetter-1.20.1-0.21.5.jar                          |Zetter                        |zetter                        |0.21.5              |DONE      |Manifest: NOSIGNATURE         carryon-forge-1.20.1-2.1.2.7.jar                  |Carry On                      |carryon                       |2.1.2.7             |DONE      |Manifest: NOSIGNATURE         macawsroofsbop-1.20-1.0.jar                       |Macaw's Roofs - BOP           |macawsroofsbop                |1.20-1.0            |DONE      |Manifest: NOSIGNATURE         dragonmounts-1.20.1-1.2.3-beta.jar                |Dragon Mounts: Legacy         |dragonmounts                  |1.2.3-beta          |DONE      |Manifest: NOSIGNATURE         twilightforest-1.20.1-4.3.2508-universal.jar      |The Twilight Forest           |twilightforest                |4.3.2508            |DONE      |Manifest: NOSIGNATURE         mcw-bridges-3.0.0-mc1.20.1forge.jar               |Macaw's Bridges               |mcwbridges                    |3.0.0               |DONE      |Manifest: NOSIGNATURE         macawsbridgesbop-1.20-1.3.jar                     |Macaw's Bridges - BOP         |macawsbridgesbop              |1.20-1.3            |DONE      |Manifest: NOSIGNATURE         FarmersDelight-1.20.1-1.2.4.jar                   |Farmer's Delight              |farmersdelight                |1.20.1-1.2.4        |DONE      |Manifest: NOSIGNATURE         entity_model_features_forge_1.20.1-2.1.2.jar      |Entity Model Features         |entity_model_features         |2.1.2               |DONE      |Manifest: NOSIGNATURE         entity_texture_features_forge_1.20.1-6.1.3.jar    |Entity Texture Features       |entity_texture_features       |6.1.3               |DONE      |Manifest: NOSIGNATURE         cozy_home-3.0.3.2-forge-1.20.1.jar                |Cozy Home                     |cozy_home                     |3.0.3.2             |DONE      |Manifest: NOSIGNATURE         AmbientSounds_FORGE_v6.0.3_mc1.20.1.jar           |AmbientSounds                 |ambientsounds                 |6.0.3               |DONE      |Manifest: NOSIGNATURE         signpost-1.20.1-2.02.0.jar                        |signpost                      |signpost                      |2.02.0              |DONE      |Manifest: NOSIGNATURE         mcw-fences-1.1.2-mc1.20.1forge.jar                |Macaw's Fences and Walls      |mcwfences                     |1.1.2               |DONE      |Manifest: NOSIGNATURE         mining-dimension-forge-1.20.1-1.1.0.jar           |Advanced Mining Dimension     |mining_dimension              |1.20.1-1.1.0        |DONE      |Manifest: NOSIGNATURE         pamhc2foodextended-1.20.4-1.0.1.jar               |Pam's HarvestCraft 2 - Food Ex|pamhc2foodextended            |0.0NONE             |DONE      |Manifest: NOSIGNATURE         MOAdecor COOKERY 1.20.2.jar                       |MOA DECOR: COOKERY            |moa_decor_cookery             |1.20.1              |DONE      |Manifest: NOSIGNATURE         Patchouli-1.20.1-84-FORGE.jar                     |Patchouli                     |patchouli                     |1.20.1-84-FORGE     |DONE      |Manifest: NOSIGNATURE         collective-1.20.1-7.70.jar                        |Collective                    |collective                    |7.70                |DONE      |Manifest: NOSIGNATURE         realmrpg_seadwellers_2.9.9_forge_1.20.1.jar       |Realm RPG: Sea Dwellers       |seadwellers                   |2.9.9               |DONE      |Manifest: NOSIGNATURE         thermal_expansion-1.20.1-11.0.1.29.jar            |Thermal Expansion             |thermal_expansion             |11.0.1              |DONE      |Manifest: NOSIGNATURE         YungsBetterStrongholds-1.20-Forge-4.0.3.jar       |YUNG's Better Strongholds     |betterstrongholds             |1.20-Forge-4.0.3    |DONE      |Manifest: NOSIGNATURE         InventoryProfilesNext-forge-1.20-1.10.10.jar      |Inventory Profiles Next       |inventoryprofilesnext         |1.10.10             |DONE      |Manifest: NOSIGNATURE         architectury-9.2.14-forge.jar                     |Architectury                  |architectury                  |9.2.14              |DONE      |Manifest: NOSIGNATURE         letsdo-API-forge-1.2.15-forge.jar                 |[Let's Do] API                |doapi                         |1.2.15              |DONE      |Manifest: NOSIGNATURE         letsdo-vinery-forge-1.4.25.jar                    |[Let's Do] Vinery             |vinery                        |1.4.25              |DONE      |Manifest: NOSIGNATURE         letsdo-herbalbrews-forge-1.0.8.jar                |[Let's Do] HerbalBrews        |herbalbrews                   |1.0.8               |DONE      |Manifest: NOSIGNATURE         FlowerBreeding-Fabric-Neo-Forge-Quilt-1.20.x.jar  |LDShadowLady's Flower Breeding|acmc                          |1.2.0               |DONE      |Manifest: NOSIGNATURE         letsdo-bakery-forge-1.1.12.1.jar                  |[Let's Do] Bakery             |bakery                        |1.1.12.1            |DONE      |Manifest: NOSIGNATURE         rer-2.9.0.jar                                     |Roughly Enough Resources      |roughlyenoughresources        |2.9.0               |DONE      |Manifest: NOSIGNATURE         mermod-forge-1.20.1-3.0.1.jar                     |Mermod                        |mermod                        |3.0.1               |DONE      |Manifest: NOSIGNATURE         framework-forge-1.20.1-0.7.6.jar                  |Framework                     |framework                     |0.7.6               |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         enchanted-forge-1.20.1-3.0.8.jar                  |Enchanted                     |enchanted                     |3.0.8               |DONE      |Manifest: NOSIGNATURE         svmm-1.20.1-2.0.0.0.jar                           |Serverside VeinMiner Mod      |svmm                          |1.20.1-2.0.0.0      |DONE      |Manifest: NOSIGNATURE         stateobserver-forge-1.20.1-1.4.2.jar              |StateObserver                 |stateobserver                 |1.4.2               |DONE      |Manifest: NOSIGNATURE         trashslot-forge-1.20-15.1.0.jar                   |TrashSlot                     |trashslot                     |15.1.0              |DONE      |Manifest: NOSIGNATURE         pamhc2trees-1.20-1.0.2.jar                        |Pam's HarvestCraft 2 - Trees  |pamhc2trees                   |1.0.2               |DONE      |Manifest: NOSIGNATURE         amendments-1.20-1.2.8.jar                         |Amendments                    |amendments                    |1.20-1.2.8          |DONE      |Manifest: NOSIGNATURE         additionallanterns-1.1.1a-forge-mc1.20.jar        |Additional Lanterns           |additionallanterns            |1.1.1a              |DONE      |Manifest: NOSIGNATURE         Oh-The-Biomes-Weve-Gone-Forge-1.4.2.jar           |Oh The Biomes We've Gone      |biomeswevegone                |1.4.2               |DONE      |Manifest: NOSIGNATURE         waystones-forge-1.20-14.1.3.jar                   |Waystones                     |waystones                     |14.1.3              |DONE      |Manifest: NOSIGNATURE         mcw-paintings-1.0.5-1.20.1forge.jar               |Macaw's Paintings             |mcwpaintings                  |1.0.5               |DONE      |Manifest: NOSIGNATURE         FastSuite-1.20.1-5.0.1.jar                        |Fast Suite                    |fastsuite                     |5.0.1               |DONE      |Manifest: NOSIGNATURE         Clumps-forge-1.20.1-12.0.0.4.jar                  |Clumps                        |clumps                        |12.0.0.4            |DONE      |Manifest: NOSIGNATURE         journeymap-1.20.1-5.10.0-forge.jar                |Journeymap                    |journeymap                    |5.10.0              |DONE      |Manifest: NOSIGNATURE         comforts-forge-6.3.5+1.20.1.jar                   |Comforts                      |comforts                      |6.3.5+1.20.1        |DONE      |Manifest: NOSIGNATURE         artifacts-forge-9.5.11.jar                        |Artifacts                     |artifacts                     |9.5.11              |DONE      |Manifest: NOSIGNATURE         configured-forge-1.20.1-2.2.3.jar                 |Configured                    |configured                    |2.2.3               |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         ExplorersCompass-1.20.1-1.3.3-forge.jar           |Explorer's Compass            |explorerscompass              |1.20.1-1.3.3-forge  |DONE      |Manifest: NOSIGNATURE         iChunUtil-1.20.1-Forge-1.0.0.jar                  |iChunUtil                     |ichunutil                     |1.0.0               |DONE      |Manifest: ae:67:c5:55:fb:7e:f3:4e:5c:71:f4:50:9e:df:a2:b0:32:86:cf:09:f2:fe:9b:db:94:3b:09:88:a2:3d:91:1f         blueprint-1.20.1-7.1.0.jar                        |Blueprint                     |blueprint                     |7.1.0               |DONE      |Manifest: NOSIGNATURE         neapolitan-1.20.1-5.0.0.jar                       |Neapolitan                    |neapolitan                    |5.0.0               |DONE      |Manifest: NOSIGNATURE         mininggadgets-1.15.6.jar                          |Mining Gadgets                |mininggadgets                 |1.15.6              |DONE      |Manifest: NOSIGNATURE         EnderStorage-1.20.1-2.11.0.188-universal.jar      |EnderStorage                  |enderstorage                  |2.11.0.188          |DONE      |Manifest: 31:e6:db:63:47:4a:6e:e0:0a:2c:11:d1:76:db:4e:82:ff:56:2d:29:93:d2:e5:02:bd:d3:bd:9d:27:47:a5:71         sereneseasonsphc2crops-1.20.1-1.0.0.jar           |Serene Seasons - Pam's Harvest|sereneseasonsphc2crops        |1.20.1-1.0.0        |DONE      |Manifest: NOSIGNATURE         craftingtweaks-forge-1.20.1-18.2.4.jar            |CraftingTweaks                |craftingtweaks                |18.2.4              |DONE      |Manifest: NOSIGNATURE         libIPN-forge-1.20-4.0.2.jar                       |libIPN                        |libipn                        |4.0.2               |DONE      |Manifest: NOSIGNATURE         EnchantmentDescriptions-Forge-1.20.1-17.0.16.jar  |EnchantmentDescriptions       |enchdesc                      |17.0.16             |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         moonlight-1.20-2.12.6-forge.jar                   |Moonlight Library             |moonlight                     |1.20-2.12.6         |DONE      |Manifest: NOSIGNATURE         ToolBelt-1.20.1-1.20.01.jar                       |Tool Belt                     |toolbelt                      |1.20.01             |DONE      |Manifest: NOSIGNATURE         nightlights-1.20.1-1.1.jar                        |Night Lights                  |nightlights                   |1.1                 |DONE      |Manifest: NOSIGNATURE         mixinsquared-forge-0.1.1.jar                      |MixinSquared                  |mixinsquared                  |0.1.1               |DONE      |Manifest: NOSIGNATURE         Jade-1.20.1-forge-11.9.2.jar                      |Jade                          |jade                          |11.9.2+forge        |DONE      |Manifest: NOSIGNATURE         another_furniture-forge-1.20.1-3.0.1.jar          |Another Furniture             |another_furniture             |1.20.1-3.0.1        |DONE      |Manifest: NOSIGNATURE         CreativeCore_FORGE_v2.11.30_mc1.20.1.jar          |CreativeCore                  |creativecore                  |2.11.30             |DONE      |Manifest: NOSIGNATURE         smoothboot(reloaded)-mc1.20.1-0.0.4.jar           |Smooth Boot (Reloaded)        |smoothboot                    |0.0.4               |DONE      |Manifest: NOSIGNATURE         CookingwithMindthemoodsV9.jar                     |Cooking with Mindthemoods     |cooking_with_mindthemoods     |1.0.0               |DONE      |Manifest: NOSIGNATURE         RoughlyEnoughItems-12.1.725-forge.jar             |Roughly Enough Items (REI)    |roughlyenoughitems            |12.1.725            |DONE      |Manifest: NOSIGNATURE         Ribbits-1.20.1-Forge-3.0.0.jar                    |Ribbits                       |ribbits                       |1.20.1-Forge-3.0.0  |DONE      |Manifest: NOSIGNATURE         FastWorkbench-1.20.1-8.0.4.jar                    |Fast Workbench                |fastbench                     |8.0.4               |DONE      |Manifest: NOSIGNATURE         variantchiseledbookshelves-1.0.jar                |Variant Chiseled Bookshelves  |variantchiseledbookshelves    |1.0                 |DONE      |Manifest: NOSIGNATURE         FlowerPatch-forge-1.20.1-3.1.0.jar                |Flower Patch                  |flowerpatch                   |3.1.0               |DONE      |Manifest: NOSIGNATURE         ferritecore-6.0.1-forge.jar                       |Ferrite Core                  |ferritecore                   |6.0.1               |DONE      |Manifest: 41:ce:50:66:d1:a0:05:ce:a1:0e:02:85:9b:46:64:e0:bf:2e:cf:60:30:9a:fe:0c:27:e0:63:66:9a:84:ce:8a         solcarrot-1.20.1-1.15.1.jar                       |Spice of Life: Carrot Edition |solcarrot                     |1.15.1              |DONE      |Manifest: NOSIGNATURE         apexcore-1.20.1-10.0.0.jar                        |ApexCore                      |apexcore                      |10.0.0              |DONE      |Manifest: NOSIGNATURE         fantasyfurniture-1.20.1-9.0.0.jar                 |Fantasy's Furniture           |fantasyfurniture              |9.0.0               |DONE      |Manifest: NOSIGNATURE         expandability-forge-9.0.4.jar                     |ExpandAbility                 |expandability                 |9.0.4               |DONE      |Manifest: NOSIGNATURE         MobLassos-v8.0.1-1.20.1-Forge.jar                 |Mob Lassos                    |moblassos                     |8.0.1               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         chisels-and-bits-forge-1.4.148.jar                |chisels-and-bits              |chiselsandbits                |1.4.148             |DONE      |Manifest: NOSIGNATURE         betterfoliage-5.0.2.jar                           |Better Foliage                |betterfoliage                 |5.0.2               |DONE      |Manifest: NOSIGNATURE     Crash Report UUID: 4fe42371-cf8d-42fa-9eee-e23e6bb6e65a     FML: 47.3     Forge: net.minecraftforge:47.3.0
  • Topics

×
×
  • Create New...

Important Information

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