LeavesMC / Leaves

Fork of Paper aimed at repairing broken vanilla properties.
https://leavesmc.org
Other
393 stars 40 forks source link

Fix name check issue in QQ group #200

Closed Lumine1909 closed 6 months ago

Lumine1909 commented 6 months ago

_N{{O~G%TUZ75CDF$LUSA3G_tmb

Still simple commit :-)

Lumine1909 commented 6 months ago

That issue is caused by CraftBukkit

CraftServer.class, implementation of Bukkit#getPlayer(String name)

    @Override
    @Deprecated
    public Player getPlayer(final String name) {
        Preconditions.checkArgument(name != null, "name cannot be null");

        Player found = this.getPlayerExact(name);
        // Try for an exact match first.
        if (found != null) {
            return found;
        }

        String lowerName = name.toLowerCase(java.util.Locale.ENGLISH);
        int delta = Integer.MAX_VALUE;
        for (Player player : this.getOnlinePlayers()) {
            if (player.getName().toLowerCase(java.util.Locale.ENGLISH).startsWith(lowerName)) {
                int curDelta = Math.abs(player.getName().length() - lowerName.length());
                if (curDelta < delta) {
                    found = player;
                    delta = curDelta;
                }
                if (curDelta == 0) break;
            }
        }
        return found;
    }
s-yh-china commented 6 months ago

thanks!