Posted December 18, 20213 yr I've been working on a mod that introduces new gems and variants of the Amethyst geodes. An issue I've been running into is when trying to get My new buds to grow from the budding blocks is "The method defaultBlockState() is undefined for the type RegistryObject<AmberClusterBlock>" public void randomTick(BlockState p_152728_, ServerLevel p_152729_, BlockPos p_152730_, Random p_152731_) { if (p_152731_.nextInt(5) == 0) { Direction direction = DIRECTIONS[p_152731_.nextInt(DIRECTIONS.length)]; BlockPos blockpos = p_152730_.relative(direction); BlockState blockstate = p_152729_.getBlockState(blockpos); RegistryObject<AmberClusterBlock> block = null; if (canClusterGrowAtState(blockstate)) { block = Blockinit.Small_Amber_Bud; } else if (blockstate.is(Blockinit.Small_Amber_Bud) && blockstate.getValue(AmberClusterBlock.FACING) == direction) { block = Blockinit.Medium_Amber_Bud; } else if (blockstate.is(Blockinit.Medium_Amber_Bud) && blockstate.getValue(AmberClusterBlock.FACING) == direction) { block = Blockinit.Large_Amber_Bud; } else if (blockstate.is(Blockinit.Large_Amber_Bud) && blockstate.getValue(AmberClusterBlock.FACING) == direction) { block = Blockinit.Amber_Cluster_Block; } if (block != null) { BlockState blockstate1 = block.defaultBlockState().setValue(AmberClusterBlock.FACING, direction).setValue(AmberClusterBlock.WATERLOGGED, Boolean.valueOf(blockstate.getFluidState().getType() == Fluids.WATER)); p_152729_.setBlockAndUpdate(blockpos, blockstate1); } Anyone know what's causing this?
December 18, 20213 yr Author 5 minutes ago, diesieben07 said: Is this caused because RegistryObject's themselves are not able to have BlockStates Defined or is it because I've somehow messed up how I registered the BlockState?
December 18, 20213 yr RegistryObject != Block, you need to use RegistryObject#get to get the Block Learn basic Java
December 18, 20213 yr Author 6 hours ago, Luis_ST said: RegistryObject != Block And which section should I replace with this?
December 19, 20213 yr do you know basic java? 19 hours ago, Tachsauce said: RegistryObject<AmberClusterBlock> block = null; use the Block directly at this point and not a RegistryObject 19 hours ago, Tachsauce said: block = Blockinit.Small_Amber_Bud; 19 hours ago, Tachsauce said: block = Blockinit.Medium_Amber_Bud; 19 hours ago, Tachsauce said: block = Blockinit.Large_Amber_Bud; 19 hours ago, Tachsauce said: block = Blockinit.Amber_Cluster_Block; then use at these points RegistryObject#get to get the Block
December 19, 20213 yr Author 18 minutes ago, Luis_ST said: do you know basic java? Still in the process of learning, sorry and thank you! works like a charm!
December 19, 20213 yr Author public void randomTick(BlockState p_152728_, ServerLevel p_152729_, BlockPos p_152730_, Random p_152731_) { if (p_152731_.nextInt(5) == 0) { Direction direction = DIRECTIONS[p_152731_.nextInt(DIRECTIONS.length)]; BlockPos blockpos = p_152730_.relative(direction); BlockState blockstate = p_152729_.getBlockState(blockpos); RegistryObject<Block> block = null; if (canClusterGrowAtState(blockstate)) { block = RegistryObject.of(new ResourceLocation("tachismod:small_amber_bud"), ForgeRegistries.BLOCKS); } else if (blockstate.is(Blocks.SMALL_AMETHYST_BUD) && blockstate.getValue(AmberClusterBlock.FACING) == direction) { block = RegistryObject.of(new ResourceLocation("tachismod:medium_amber_bud"), ForgeRegistries.BLOCKS); } else if (blockstate.is(Blocks.MEDIUM_AMETHYST_BUD) && blockstate.getValue(AmberClusterBlock.FACING) == direction) { block = RegistryObject.of(new ResourceLocation("tachismod:large_amber_bud"), ForgeRegistries.BLOCKS); } else if (blockstate.is(Blocks.LARGE_AMETHYST_BUD) && blockstate.getValue(AmberClusterBlock.FACING) == direction) { block = RegistryObject.of(new ResourceLocation("tachismod:amber_cluster_block"), ForgeRegistries.BLOCKS); } if (block != null) { BlockState blockstate1 = block.defaultBlockState().setValue(AmberClusterBlock.FACING, direction).setValue(AmberClusterBlock.WATERLOGGED, Boolean.valueOf(blockstate.getFluidState().getType() == Fluids.WATER)); p_152729_.setBlockAndUpdate(blockpos, blockstate1); } Not sure if this was the solution you were hoping for but its still throwing errors at me unfortunately.
December 19, 20213 yr 12 minutes ago, Tachsauce said: RegistryObject<Block> block = null; why, use Block as local variable and not RegistryObject 21 hours ago, Tachsauce said: block = Blockinit.Small_Amber_Bud and then add there a simple .get() 20 hours ago, Luis_ST said: Learn basic Java Official documentation: https://docs.oracle.com/javase/tutorial/ Absolute basics with an interactive editor: https://www.codecademy.com/learn/learn-java Ongoingonline course with assignments: https://java-programming.mooc.fi/ Edited December 19, 20213 yr by Luis_ST
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.