4
4
import dev .cammiescorner .camsbackpacks .common .blocks .BackpackBlock ;
5
5
import dev .cammiescorner .camsbackpacks .common .blocks .entities .BackpackBlockEntity ;
6
6
import dev .cammiescorner .camsbackpacks .common .items .BackpackItem ;
7
- import dev .cammiescorner .camsbackpacks .common .screen .BackpackScreenHandler ;
8
7
import dev .cammiescorner .camsbackpacks .core .util .BackpackHelper ;
9
8
import io .netty .buffer .Unpooled ;
9
+ import net .minecraft .ChatFormatting ;
10
10
import net .minecraft .core .BlockPos ;
11
11
import net .minecraft .nbt .CompoundTag ;
12
12
import net .minecraft .network .FriendlyByteBuf ;
13
+ import net .minecraft .network .chat .Component ;
14
+ import net .minecraft .network .chat .MutableComponent ;
13
15
import net .minecraft .resources .ResourceLocation ;
14
16
import net .minecraft .server .MinecraftServer ;
15
17
import net .minecraft .server .level .ServerPlayer ;
22
24
import net .minecraft .world .level .Level ;
23
25
import net .minecraft .world .level .block .state .properties .BlockStateProperties ;
24
26
import org .quiltmc .qsl .networking .api .PacketSender ;
25
- import org .quiltmc .qsl .networking .api .PlayerLookup ;
26
27
import org .quiltmc .qsl .networking .api .client .ClientPlayNetworking ;
27
28
28
29
public class EquipBackpackPacket {
@@ -42,6 +43,15 @@ public static void handle(MinecraftServer server, ServerPlayer player, ServerGam
42
43
server .execute (() -> {
43
44
Level world = player .level ();
44
45
46
+ if (!world .mayInteract (player , pos )) {
47
+ player .closeContainer ();
48
+ MutableComponent message = isBlockEntity
49
+ ? Component .translatable ("error.camsbackpacks.permission_pickup_at" )
50
+ : Component .translatable ("error.camsbackpacks.permission_place_at" );
51
+ player .sendSystemMessage (message .withStyle (ChatFormatting .RED ), true );
52
+ return ;
53
+ }
54
+
45
55
if (isBlockEntity ) {
46
56
if (world .getBlockEntity (pos ) instanceof BackpackBlockEntity blockEntity ) {
47
57
ItemStack stack = new ItemStack (world .getBlockState (pos ).getBlock ().asItem ());
@@ -55,10 +65,7 @@ public static void handle(MinecraftServer server, ServerPlayer player, ServerGam
55
65
stack .setHoverName (blockEntity .getName ());
56
66
57
67
world .destroyBlock (pos , false , player );
58
- PlayerLookup .tracking (blockEntity ).forEach (playerEntity -> {
59
- if (playerEntity .containerMenu instanceof BackpackScreenHandler handler && handler .blockPos .equals (pos ))
60
- playerEntity .closeContainer ();
61
- });
68
+
62
69
}
63
70
} else {
64
71
ItemStack stack = player .getItemBySlot (EquipmentSlot .CHEST );
0 commit comments