Skip to content

Commit 9981f90

Browse files
committed
Fix early block entry dereference causing null pointer exception
1 parent da907fc commit 9981f90

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

src/main/java/com/hlysine/create_connected/CCBlocks.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -245,8 +245,8 @@ public class CCBlocks {
245245
.register();
246246

247247
public static final BlockEntry<LinkedAnalogLeverBlock> LINKED_ANALOG_LEVER = REGISTRATE
248-
.block("linked_analog_lever", properties -> new LinkedAnalogLeverBlock(properties, AllBlocks.ANALOG_LEVER.get()))
249-
.initialProperties(AllBlocks.ANALOG_LEVER)
248+
.block("linked_analog_lever", properties -> new LinkedAnalogLeverBlock(properties, AllBlocks.ANALOG_LEVER))
249+
.initialProperties(() -> Blocks.LEVER)
250250
.transform(LinkedTransmitterItem.register())
251251
.blockstate(CCBlockStateGen.linkedLever(
252252
Create.asResource("block/analog_lever/block"),

src/main/java/com/hlysine/create_connected/content/linkedtransmitter/LinkedAnalogLeverBlock.java

+10-9
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.simibubi.create.content.redstone.analogLever.AnalogLeverBlock;
99
import com.simibubi.create.content.schematics.requirement.ISpecialBlockItemRequirement;
1010
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
11+
import com.tterrag.registrate.util.nullness.NonNullSupplier;
1112
import net.minecraft.core.BlockPos;
1213
import net.minecraft.core.Direction;
1314
import net.minecraft.world.InteractionHand;
@@ -38,12 +39,12 @@
3839
public class LinkedAnalogLeverBlock extends AnalogLeverBlock implements ISpecialBlockItemRequirement, IWrenchable, LinkedTransmitterBlock {
3940

4041
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
41-
private final AnalogLeverBlock base;
42+
private final NonNullSupplier<AnalogLeverBlock> baseSupplier;
4243

43-
public LinkedAnalogLeverBlock(Properties pProperties, AnalogLeverBlock base) {
44+
public LinkedAnalogLeverBlock(Properties pProperties, NonNullSupplier<AnalogLeverBlock> baseSupplier) {
4445
super(pProperties);
4546
registerDefaultState(defaultBlockState().setValue(POWERED, false));
46-
this.base = base;
47+
this.baseSupplier = baseSupplier;
4748
}
4849

4950
@Override
@@ -59,7 +60,7 @@ public Block getBlock() {
5960

6061
@Override
6162
public Block getBase() {
62-
return base;
63+
return baseSupplier.get();
6364
}
6465

6566
@Override
@@ -78,7 +79,7 @@ public Block getBase() {
7879
@SuppressWarnings("deprecation")
7980
@Override
8081
public @NotNull List<ItemStack> getDrops(@NotNull BlockState state, LootParams.@NotNull Builder builder) {
81-
return base.getDrops(state, builder);
82+
return getBase().getDrops(state, builder);
8283
}
8384

8485
private boolean isHittingBase(BlockState state, BlockGetter level, BlockPos pos, HitResult hit) {
@@ -101,7 +102,7 @@ private boolean isHittingBase(BlockState state, BlockGetter level, BlockPos pos,
101102
public void onRemove(@NotNull BlockState state, @NotNull Level world, @NotNull BlockPos pos, @NotNull BlockState newState, boolean isMoving) {
102103
if (!state.is(newState.getBlock()) && !isMoving && getBlockEntityOptional(world, pos).map(be -> ((LinkedAnalogLeverBlockEntity) be).containsBase).orElse(false))
103104
Block.popResource(world, pos, new ItemStack(CCItems.LINKED_TRANSMITTER));
104-
base.onRemove(state, world, pos, newState, isMoving);
105+
getBase().onRemove(state, world, pos, newState, isMoving);
105106
}
106107

107108
@Override
@@ -132,22 +133,22 @@ public void replaceBase(BlockState baseState, Level world, BlockPos pos) {
132133

133134
public void replaceWithBase(BlockState state, Level world, BlockPos pos) {
134135
AllSoundEvents.CONTROLLER_TAKE.playOnServer(world, pos);
135-
world.setBlockAndUpdate(pos, base.defaultBlockState()
136+
world.setBlockAndUpdate(pos, getBase().defaultBlockState()
136137
.setValue(FACING, state.getValue(FACING))
137138
.setValue(FACE, state.getValue(FACE)));
138139
}
139140

140141
@Override
141142
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos, Player player) {
142143
if (isHittingBase(state, world, pos, target))
143-
return base.getCloneItemStack(state, target, world, pos, player);
144+
return getBase().getCloneItemStack(state, target, world, pos, player);
144145
return new ItemStack(CCItems.LINKED_TRANSMITTER.get());
145146
}
146147

147148
@Override
148149
public ItemRequirement getRequiredItems(BlockState state, BlockEntity be) {
149150
ArrayList<ItemStack> requiredItems = new ArrayList<>();
150-
requiredItems.add(new ItemStack(base));
151+
requiredItems.add(new ItemStack(getBase()));
151152
requiredItems.add(new ItemStack(CCItems.LINKED_TRANSMITTER.get()));
152153
return new ItemRequirement(ItemRequirement.ItemUseType.CONSUME, requiredItems);
153154
}

0 commit comments

Comments
 (0)