Posted October 31, 20214 yr 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.
October 31, 20214 yr Author 3 minutes ago, diesieben07 said: You call setValue and then do nothing with the result. BlockState is immutable, setValue gives you a new BlockState. How do I assign it to powered?
October 31, 20214 yr Author 3 minutes ago, diesieben07 said: You need to call Level#setBlock to change the block at a position. Thanks.
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.