1010import net .minecraft .world .level .block .Block ;
1111import net .minecraft .world .level .block .state .BlockState ;
1212import net .minecraft .world .level .block .state .StateDefinition ;
13+ import net .minecraft .world .level .block .state .properties .BooleanProperty ;
1314import net .minecraft .world .level .block .state .properties .EnumProperty ;
1415import net .minecraft .world .phys .BlockHitResult ;
1516import net .nullved .pmweatherapi .data .PMWExtras ;
2425@ Mixin (RadarBlock .class )
2526public class RadarBlockMixin {
2627 @ Shadow public static EnumProperty <RadarBlock .Mode > RADAR_MODE ;
28+ @ Shadow public static BooleanProperty ON ;
2729
2830 @ Redirect (method = "<init>" , at = @ At (value = "INVOKE" , target = "Ldev/protomanly/pmweather/block/RadarBlock;registerDefaultState(Lnet/minecraft/world/level/block/state/BlockState;)V" ))
2931 private void init (RadarBlock instance , BlockState state ) {
3032 instance .registerDefaultState (instance .defaultBlockState ().setValue (PMWExtras .RADAR_MODE , RadarMode .REFLECTIVITY ).setValue (RADAR_MODE , RadarBlock .Mode .REFLECTIVITY ));
3133 }
3234
33- @ Inject (method = "createBlockStateDefinition" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/world/level/block/state/StateDefinition$Builder;add([Lnet/minecraft/world/level/block/state/properties/Property;)Lnet/minecraft/world/level/block/state/StateDefinition$Builder; " ))
35+ @ Inject (method = "createBlockStateDefinition" , at = @ At (value = "TAIL " ))
3436 private void createBlockStateDefinition (StateDefinition .Builder <Block , BlockState > builder , CallbackInfo ci ) {
3537 builder .add (PMWExtras .RADAR_MODE );
3638 }
@@ -39,6 +41,11 @@ private void createBlockStateDefinition(StateDefinition.Builder<Block, BlockStat
3941 private InteractionResult useWithoutItem (BlockState state , Level level , BlockPos pos , Player player , BlockHitResult hitResult , Operation <InteractionResult > original ) {
4042 original .call (state , level , pos , player , hitResult );
4143
44+ if (player .isCrouching ()) {
45+ level .setBlockAndUpdate (pos , state .setValue (ON , !state .getValue (ON )));
46+ return InteractionResult .SUCCESS_NO_ITEM_USED ;
47+ }
48+
4249 if (!level .isClientSide ()) {
4350 RadarMode currentMode = state .getValue (PMWExtras .RADAR_MODE );
4451 RadarMode newMode = currentMode .cycle ();
0 commit comments