@@ -143,27 +143,25 @@ public boolean canSurvive(BlockState state, LevelReader reader, BlockPos pos) {
143
143
@ Override
144
144
public void randomTick (BlockState state , ServerLevel level , BlockPos pos , RandomSource source ) {
145
145
float x = source .nextFloat ();
146
- if (x <= MAX_TRANSFER_THRESH || x >= MIN_TRANSFER_THRESH )
147
- {
148
-
149
- if (canDrip (level , pos )) {
150
- BlockPos targetPos = pos .above (2 );
151
- BlockState targetState = level .getBlockState (targetPos );
152
-
153
- if (Blocks .SOUL_SAND .equals (targetState .getBlock ())) {
154
- changeBlock (level , pos , targetPos , targetState , Blocks .SAND .defaultBlockState ());
155
- possesBlock (level , pos );
156
- }
157
- else if (Blocks .SOUL_SOIL .equals (targetState .getBlock ())) {
158
- changeBlock (level , pos , targetPos , targetState , Blocks .RED_SAND .defaultBlockState ());
159
- possesBlock (level , pos );
160
- }
146
+ if (! (x <= MAX_TRANSFER_THRESH ) && ! (x >= MIN_TRANSFER_THRESH )) {
147
+ return ;
148
+ }
161
149
162
- }
150
+ if (! canDrip (level , pos )) {
151
+ return ;
152
+ }
163
153
154
+ BlockPos targetPos = pos .above (2 );
155
+ BlockState targetState = level .getBlockState (targetPos );
164
156
157
+ if (Blocks .SOUL_SAND .equals (targetState .getBlock ())) {
158
+ changeBlock (level , pos , targetPos , targetState , Blocks .SAND .defaultBlockState ());
159
+ possesBlock (level , pos );
160
+ }
161
+ else if (Blocks .SOUL_SOIL .equals (targetState .getBlock ())) {
162
+ changeBlock (level , pos , targetPos , targetState , Blocks .RED_SAND .defaultBlockState ());
163
+ possesBlock (level , pos );
165
164
}
166
-
167
165
}
168
166
169
167
/**
@@ -179,6 +177,7 @@ private void possesBlock(ServerLevel level, BlockPos pos) {
179
177
{
180
178
return ;
181
179
}
180
+
182
181
BlockState targetState = level .getBlockState (targetPos ); //***Get the target state
183
182
184
183
//***If the block is sand make it soul sand
@@ -188,26 +187,25 @@ private void possesBlock(ServerLevel level, BlockPos pos) {
188
187
//***If the block is RED Stand make it soul soil
189
188
else if (targetState .is (Blocks .RED_SAND )) {
190
189
changeBlock (level , pos , targetPos , targetState , Blocks .SOUL_SOIL .defaultBlockState ());
191
-
192
190
}
193
191
//****IF the block is a sculk cauldron fill it
194
192
else if (targetState .is (ModBlocks .SCULK_CAULDRON .get ())) {
195
- if (!targetState .getValue (SculkCauldronBlock .FULL )) {
196
-
197
- targetState .setValue (SculkCauldronBlock .FULL , Boolean .TRUE );
198
-
199
- level .setBlock (targetPos , targetState .setValue (SculkCauldronBlock .FULL , true ), 3 );
200
-
193
+ if (targetState .getValue (SculkCauldronBlock .FULL )) {
194
+ return ;
201
195
}
202
196
197
+ targetState .setValue (SculkCauldronBlock .FULL , Boolean .TRUE );
198
+ level .setBlock (targetPos , targetState .setValue (SculkCauldronBlock .FULL , true ), 3 );
199
+
203
200
}
204
201
//***If the block is a sculk catalyst trigger its spawning
205
202
else if (targetState .is (Blocks .SCULK_CATALYST )) {
206
203
SculkCatalystBlockEntity catalystBlockEntity = (SculkCatalystBlockEntity ) level .getBlockEntity (targetPos );
207
204
SculkSpreader spreader = catalystBlockEntity .getListener ().getSculkSpreader ();
208
- spreader .addCursors (new BlockPos (targetPos .offset (0 , 1 , 0 )), 10 );
205
+ spreader .addCursors (new BlockPos (targetPos .offset (0 , - 1 , 0 )), 100 );
209
206
//SculkCatalystBlock.bloom(level, targetPos, targetState, level.getRandom());
210
207
level .setBlock (targetPos , targetState .setValue (SculkCatalystBlock .PULSE , Boolean .valueOf (true )), 3 );
208
+ level .scheduleTick (targetPos ,targetState .getBlock (),32 );
211
209
}
212
210
213
211
@@ -375,7 +373,12 @@ else if (direction == blockTipDirection.getOpposite() && !this.canSurvive(blockS
375
373
* @return Soul Vessel block
376
374
*/
377
375
private static BlockPos findSoulVessel (Level level , BlockPos pos ) {
378
- Predicate <BlockState > predicate = (blockState ) -> blockState .is (ModBlocks .SCULK_CAULDRON .get ());
376
+ Predicate <BlockState > predicate = (blockState ) -> (
377
+ blockState .is (ModBlocks .SCULK_CAULDRON .get ()) ||
378
+ blockState .is (Blocks .SAND ) ||
379
+ blockState .is (Blocks .RED_SAND ) ||
380
+ blockState .is (Blocks .SCULK_CATALYST )
381
+ );
379
382
380
383
BiPredicate <BlockPos , BlockState > biPredicate = (pos1 , blockState ) -> canDripThrough (level , pos1 , blockState );
381
384
0 commit comments