Skip to content

Commit 05c3f75

Browse files
committed
Fix crash #35
1 parent 0ea84d2 commit 05c3f75

4 files changed

Lines changed: 24 additions & 8 deletions

File tree

src/main/java/org/vfast/backrooms/blocks/TextSignBlock.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
import com.mojang.serialization.MapCodec;
44
import net.minecraft.client.Minecraft;
5+
import net.minecraft.client.player.LocalPlayer;
56
import net.minecraft.core.BlockPos;
67
import net.minecraft.core.Direction;
78
import net.minecraft.util.RandomSource;
89
import net.minecraft.world.InteractionHand;
910
import net.minecraft.world.InteractionResult;
10-
import net.minecraft.world.entity.LivingEntity;
1111
import net.minecraft.world.entity.player.Player;
1212
import net.minecraft.world.item.context.BlockPlaceContext;
1313
import net.minecraft.world.level.BlockGetter;
@@ -20,13 +20,13 @@
2020
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
2121
import net.minecraft.world.level.block.state.properties.EnumProperty;
2222
import net.minecraft.world.phys.BlockHitResult;
23-
import net.minecraft.world.phys.Vec3;
2423
import net.minecraft.world.phys.shapes.CollisionContext;
2524
import net.minecraft.world.phys.shapes.VoxelShape;
2625
import org.jspecify.annotations.Nullable;
2726
import org.vfast.backrooms.blocks.entity.TextSignBlockEntity;
2827
import org.vfast.backrooms.blocks.interfaces.CeilingSupportSign;
2928
import org.vfast.backrooms.client.gui.TextSignEditScreen;
29+
import org.vfast.backrooms.interfaces.GuiOpener;
3030

3131
public class TextSignBlock extends BaseEntityBlock implements CeilingSupportSign {
3232
public static final MapCodec<TextSignBlock> CODEC = simpleCodec(TextSignBlock::new);
@@ -50,9 +50,8 @@ protected MapCodec<TextSignBlock> codec() {
5050
@Override
5151
protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) {
5252
TextSignBlock.TextDirection direction = this.getFacingText(hitResult, state);
53-
if (level.isClientSide() && direction != TextDirection.NONE && level.getBlockEntity(pos) instanceof TextSignBlockEntity blockEntity) {
54-
TextSignEditScreen editScreen = new TextSignEditScreen(blockEntity, pos, this.getFacingText(hitResult, state) == TextDirection.FRONT);
55-
Minecraft.getInstance().setScreen(editScreen);
53+
if (player instanceof GuiOpener && direction != TextDirection.NONE && level.getBlockEntity(pos) instanceof TextSignBlockEntity blockEntity) {
54+
((GuiOpener) player).openTextSignEdit(blockEntity, pos, this.getFacingText(hitResult, state) == TextDirection.FRONT);
5655
player.swing(InteractionHand.MAIN_HAND);
5756
return InteractionResult.SUCCESS;
5857
} else {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.vfast.backrooms.interfaces;
2+
3+
import net.minecraft.core.BlockPos;
4+
import org.vfast.backrooms.blocks.entity.TextSignBlockEntity;
5+
6+
public interface GuiOpener {
7+
void openTextSignEdit(TextSignBlockEntity blockEntity, BlockPos pos, boolean isFront);
8+
}

src/main/java/org/vfast/backrooms/mixins/LocalPlayerMixins.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,22 @@
55
import net.minecraft.client.multiplayer.ClientLevel;
66
import net.minecraft.client.player.AbstractClientPlayer;
77
import net.minecraft.client.player.LocalPlayer;
8-
import net.minecraft.client.resources.sounds.AmbientSoundHandler;
8+
import net.minecraft.core.BlockPos;
99
import org.spongepowered.asm.mixin.Final;
1010
import org.spongepowered.asm.mixin.Mixin;
1111
import org.spongepowered.asm.mixin.Shadow;
1212
import org.spongepowered.asm.mixin.injection.At;
1313
import org.spongepowered.asm.mixin.injection.Inject;
1414
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
15+
import org.vfast.backrooms.blocks.entity.TextSignBlockEntity;
16+
import org.vfast.backrooms.client.gui.TextSignEditScreen;
17+
import org.vfast.backrooms.interfaces.GuiOpener;
1518
import org.vfast.backrooms.world.BackroomsLevels;
1619

1720
import java.util.List;
1821

1922
@Mixin(LocalPlayer.class)
20-
public abstract class LocalPlayerMixins extends AbstractClientPlayer {
23+
public abstract class LocalPlayerMixins extends AbstractClientPlayer implements GuiOpener {
2124
@Shadow
2225
@Final
2326
protected Minecraft minecraft;
@@ -35,4 +38,10 @@ private void forceStopSprint(CallbackInfoReturnable<Boolean> cir) {
3538
cir.setReturnValue(false);
3639
}
3740
}
41+
42+
@Override
43+
public void openTextSignEdit(TextSignBlockEntity blockEntity, BlockPos pos, boolean isFront) {
44+
TextSignEditScreen editScreen = new TextSignEditScreen(blockEntity, pos, isFront);
45+
this.minecraft.setScreen(editScreen);
46+
}
3847
}

src/main/resources/backrooms.mixins.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
"package": "org.vfast.backrooms.mixins",
44
"compatibilityLevel": "JAVA_21",
55
"mixins": [
6-
"ImmersiveDimensions",
76
"PlayerMixins",
87
"ServerPlayerMixins"
98
],
109
"client": [
10+
"ImmersiveDimensions",
1111
"AvatarRendererMixins",
1212
"BlockColorsMixins",
1313
"ChatScreenMixins",

0 commit comments

Comments
 (0)