Posted October 17, 20223 yr Alright, so for context, I'm a new modder and I've come back to learning java after a while. I forgot most of my java knowledge from a while back, so I re-learned it, and I felt confident enough to try minecraft modding, but I have a problem with custom block entities. I am trying to create a custom block entity called "Altar of Essence", but I have a problem with the code, and I do not know where to even start fixing it. My BlockEntity class: public class AltarOfEssenceBlockEntity extends BlockEntity implements MenuProvider { private final ItemStackHandler itemHandler = new ItemStackHandler(3) { @Override protected void onContentsChanged(int slot) { setChanged(); } }; private LazyOptional<IItemHandler> lazyItemHandler = LazyOptional.empty(); public AltarOfEssenceBlockEntity(BlockPos pos, BlockState state) { super(p_155228_, pos, state); } @Override public Component getDisplayName() { return Component.literal("Altar of Essence"); } @Nullable @Override public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { return } @Override public @NotNull <T> LazyOptional<T> getCapability(@NotNull Capability<T> cap, @Nullable Direction side) { if(cap == ForgeCapabilities.ITEM_HANDLER) { return lazyItemHandler.cast(); } return super.getCapability(cap, side); } @Override public void onLoad() { super.onLoad(); lazyItemHandler = LazyOptional.of(() -> itemHandler); } @Override public void invalidateCaps() { super.invalidateCaps(); lazyItemHandler.invalidate(); } @Override protected void saveAdditional(CompoundTag nbt) { nbt.put("inventory", itemHandler.serializeNBT()); super.saveAdditional(nbt); } @Override public void load(CompoundTag nbt) { super.load(nbt); itemHandler.deserializeNBT(nbt.getCompound("inventory")); } public void drops() { SimpleContainer inventory = new SimpleContainer(itemHandler.getSlots()); for (int i = 0; i < itemHandler.getSlots(); i++) { inventory.setItem(i, itemHandler.getStackInSlot(i)); } Containers.dropContents(this.level, this.worldPosition, inventory); } } And my Block class: package net.natan.natansrealmmod.block.custom; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BaseEntityBlock; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraftforge.network.NetworkHooks; import org.jetbrains.annotations.Nullable; public class AltarOfEssenceBlock extends BaseEntityBlock { public AltarOfEssenceBlock(Properties properties) { super(properties); } /* BLOCK ENTITY */ @Override public RenderShape getRenderShape(BlockState p_49232_) { return RenderShape.MODEL; } @Override public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { if (pState.getBlock() != pNewState.getBlock()) { BlockEntity blockEntity = pLevel.getBlockEntity(pPos); if (blockEntity instanceof AltarOfEssenceBlockEntity) { ((AltarOfEssenceBlockEntity) blockEntity).drops(); } } super.onRemove(pState, pLevel, pPos, pNewState, pIsMoving); } @Override public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand, BlockHitResult pHit) { if (!pLevel.isClientSide()) { BlockEntity entity = pLevel.getBlockEntity(pPos); if(entity instanceof AltarOfEssenceBlockEntity) { NetworkHooks.openScreen(((ServerPlayer)pPlayer), (AltarOfEssenceBlockEntity)entity, pPos); } else { throw new IllegalStateException("Our Container provider is missing!"); } } return InteractionResult.sidedSuccess(pLevel.isClientSide()); } @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { return new AltarOfEssenceBlockEntity(pos, state); } @Nullable @Override public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState state, BlockEntityType<T> type) { return super.getTicker(level, state, type); return createTickerHelper(type, ); } } The problem I am facing here is that in the Block class, under the OnRemove override, use override and newBlockEntity override, AltarOfEssenceBlockEntity turns red and the error message I get is "cannot resolve symbol". What does this mean, and how can I fix it???
October 17, 20223 yr Author Never mind; it was a simple fix. I invalidated my caches then imported the class.
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.