Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for NezuShin

Detect client's mods using translation resolver from server side and restrict their abilities!

Report NMinimapIrisBlocker?

NMinimapIrisBlocker

Sign-check mods detector. Designed to use with NMinimap but can also work separately.

Features

  • Configurable mod list (via restricted-translations config property)
  • Configurable blocked commands for players with these mods installed.
  • On-join check for players
  • Automatic NMinimap disable for players with restrictions

Supported server platforms

Dependencies

Permissions

  • nminimap.skip-check - access to bypass sign check
  • nminimap.admin - access to admin features

Admin commands

/mib reload - Reload plugin
/mib probe <player> - Force probe player. Restrictions will not apply if player has nminimap.skip-check permission
/mib players - Show list of players with restrictions

How does it work?

Minecraft client can resolve translations components (e.g. iris.shaders.reloaded, item.minecraft.diamond, etc.) on signs. Plugin utilizes it - opens and closes sign menu when player joining.

About packetevents

For some reason sign check is works much worse with packetevents than with ProtocolLib with same code. I have not figured out why yet. For now ProtocolLib runs flawlessly, so consider using ProtocolLib

API

Force probe player

public void myProbe(Player player) {
    NMinimapIrisBlocker.getInstance().probe(player, ProbeCause.CUSTOM)
            .thenAccept(result -> {
                System.out.println("CHECK RESULT: " + result.result());
                System.out.println("RESOLVED TRANSLATIONS");
                System.out.println(result.resolved());
            });
}

Handle on-join check (to open menu for example)

@EventHandler
public void handleJoinCheck(AsyncPlayerCheckDoneEvent e) {
    if (!e.getCause().equals(ProbeCause.JOIN))
        return;
    var player = e.getPlayer();
    System.out.println("CHECK RESULT: " + e.getResult().result());
    System.out.println("RESOLVED TRANSLATIONS");
    System.out.println(e.getResult().resolved());

    player.openInventory(yourInventory);//etc
}

Information

CategoryAdmin Tools
Published onJuly 13, 2026
LicenseGPL
Download1
Stars0
Watchers0
Supports Folia

Pinned Versions

Members