From dfdd4aace9292198f4e8a4c3a598db5a0289bf67 Mon Sep 17 00:00:00 2001 From: Philipp Daniels Date: Sat, 11 Jan 2025 13:45:40 +0100 Subject: [PATCH] bug: handle non player place_block in AntiBuild (resolves #241) --- .../initializer/anti_build/AntiBuildInitializer.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/sakurawald/module/initializer/anti_build/AntiBuildInitializer.java b/src/main/java/io/github/sakurawald/module/initializer/anti_build/AntiBuildInitializer.java index 2f401cff..26b50c40 100644 --- a/src/main/java/io/github/sakurawald/module/initializer/anti_build/AntiBuildInitializer.java +++ b/src/main/java/io/github/sakurawald/module/initializer/anti_build/AntiBuildInitializer.java @@ -9,6 +9,7 @@ import net.minecraft.entity.player.PlayerEntity; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import java.util.Optional; import java.util.Set; import java.util.function.Supplier; @@ -16,9 +17,7 @@ public class AntiBuildInitializer extends ModuleInitializer { public static final BaseConfigurationHandler config = new ObjectConfigurationHandler<>(BaseConfigurationHandler.CONFIG_JSON, AntiBuildConfigModel.class); public static void checkAntiBuild(PlayerEntity player, String antiType, Set ids, String id, CallbackInfoReturnable cir, T cancelWithValue, Supplier shouldSendFeedback) { - if ((ids.contains(id) || ids.contains("*")) - && !PermissionHelper.hasPermission(player.getUuid(), "fuji.anti_build.%s.bypass.%s".formatted(antiType, id)) - ) { + if ((ids.contains(id) || ids.contains("*")) && !isAllowedByPlayerPermission(player, antiType, id)) { if (shouldSendFeedback.get()) { TextHelper.sendMessageByKey(player, "anti_build.disallow"); } @@ -26,4 +25,10 @@ public static void checkAntiBuild(PlayerEntity player, String antiType, Set< cir.setReturnValue(cancelWithValue); } } + + private static boolean isAllowedByPlayerPermission(PlayerEntity player, String antiType, String id) { + return Optional.ofNullable(player) + .map(p -> PermissionHelper.hasPermission(player.getUuid(), "fuji.anti_build.%s.bypass.%s".formatted(antiType, id))) + .orElse(true); + } }