My code reads as follows:
import com.example.computercraft.Reference;
import net.minecraft.core.BlockPos;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.level.block.state.properties.Property;
import net.minecraft.world.level.material.Material;
import net.minecraft.world.phys.BlockHitResult;
public class Computer extends Block {
static final Property<Boolean> powered = BooleanProperty.create("powered");
public Computer() {
super(BlockBehaviour.Properties.of(Material.PISTON));
this.registerDefaultState(this.stateDefinition.any().setValue(powered, false));
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> p_49915_) {
p_49915_.add(powered);
super.createBlockStateDefinition(p_49915_);
}
public InteractionResult use (BlockState state, Level level, BlockPos pos, Player player, InteractionHand interactionHand, BlockHitResult hit){
Reference.LOGGER.log(org.apache.logging.log4j.Level.INFO, Boolean.toString(state.getValue(powered)));
state.setValue(powered, !state.getValue(powered));
return InteractionResult.SUCCESS;
}
}
When I right click on the block, it prints false twice and doesn't change at all. What is the problem with this code and how can I fix it? I am new to forge modding so please don't go full stack overflow on me.