-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Plugin Version
0.6.0
Operating System
Linux (Debian/Ubuntu)
Bug Description
OrbisGuard-Mixins has a hardcoded permission check for orbisguard.bypass that completely bypasses all protection hooks before HyperFactions' hook is called. This means players with this permission (often given to faction owners/officers via permission plugins) can bypass HyperFactions zone and claim protections even when they shouldn't.
This is a design limitation that prevents HyperFactions from having full control over its own protection system.
Steps to Reproduce
- Give a player the
orbisguard.bypasspermission (e.g., faction owner role) - Create a SafeZone with item pickup disabled
- Drop an item in the zone
- Have the player with
orbisguard.bypasstry to pick it up - Item is picked up despite zone flag being OFF
Expected Behavior
HyperFactions should be able to control when bypass is allowed, independent of the orbisguard.bypass permission. The plugin's own bypass system (/f admin bypass) should be the authority for HyperFactions protections.
Logs
N/A - This is by design in OrbisGuard-Mixins, not an error.
Code Snippets
From PlayerItemEntityPickupSystemMixin (OrbisGuard-Mixins):
// Bypass check happens BEFORE hook is called
boolean bypass = player.hasPermission("orbisguard.bypass");
// ...
if (ctx.bypass()) {
// Skip all protection checks - hook never called
return container.addItemStack(itemStack);
}Additional Information
Current Workaround:
Admins must manually set orbisguard.bypass: false in HyperPerms for roles that shouldn't bypass. This is:
- Not intuitive (requires knowing about this hidden permission)
- Error-prone (easy to forget when setting up new roles)
- Doesn't integrate with HyperFactions' own bypass system
Proposed Solutions (require OrbisGuard developer coordination):
- Hook receives bypass flag - Let HyperFactions decide whether to honor it:
boolean check(UUID player, String world, double x, y, z, String mode, boolean hasBypass)- Bypass check delegated to hook - Separate hook method for bypass:
boolean shouldBypass(UUID player, String world, double x, double y, double z)- Configuration option - OrbisGuard-Mixins config to disable built-in bypass check
Affected Systems:
- Auto pickup protection (when mixin works)
- F-key harvest protection
- Any other mixin-based protections with bypass checks
Action Required: Coordination with OrbisGuard developers to modify bypass handling.
Confirmation Checklist
- I have checked the existing issues for duplicates.
- I agree to follow this project's Code of Conduct.