Skip to content

Commit

Permalink
bug: handle non player place_block in AntiBuild (resolves #241)
Browse files Browse the repository at this point in the history
  • Loading branch information
phaldan committed Jan 11, 2025
1 parent 5997415 commit dfdd4aa
Showing 1 changed file with 8 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,26 @@
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;

public class AntiBuildInitializer extends ModuleInitializer {
public static final BaseConfigurationHandler<AntiBuildConfigModel> config = new ObjectConfigurationHandler<>(BaseConfigurationHandler.CONFIG_JSON, AntiBuildConfigModel.class);

public static <T> void checkAntiBuild(PlayerEntity player, String antiType, Set<String> ids, String id, CallbackInfoReturnable<T> cir, T cancelWithValue, Supplier<Boolean> 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");
}

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);
}
}

0 comments on commit dfdd4aa

Please sign in to comment.