Tatako Anticheat API 文档

本文档适用于 Tatako Anticheat 插件,最近更新2026/5/3,Tatako版本 1.0-b5-pe2-260426a

概述

Tatako 提供了一套公开的 API,API未混淆,提供警报监听,设置被动检测等功能。包名是 com.tjshawa.api

检查接口

CheckInfo

重要 此类已废弃,为兼容性而保留,请使用CheckInfoBuilder

package com.tjshawa.api.check;

public interface CheckInfo {
    String name();
    String description();
    String type();
    boolean experimental();
    String complexType();
}

接口,用于提供检测的基本元信息。方法:

方法返回说明
name()String检测名称
description()String检测描述
type()String检测类型(如 "Combat")
experimental()boolean是否为实验性检测
complexType()String复杂类型标识(可选)

LegacyCheckInfo

重要 此类已废弃,为兼容性而保留,请使用CheckInfoBuilder

package com.tjshawa.api.check;

public class LegacyCheckInfo implements CheckInfo {
    private final String name;
    private final String type;
    private final String description;
    private final boolean experimental;
    private final String complexType;

    public LegacyCheckInfo(String name, String type, String description, boolean experimental, String complexType) {
        this.name = name;
        this.type = type;
        this.description = description;
        this.experimental = experimental;
        this.complexType = complexType;
    }

    // 注解兼容方法
    @Override
    public String name() {
        return name;
    }
    @Override
    public String type() {
        return type;
    }
    @Override
    public String description() {
        return description;
    }
    @Override
    public boolean experimental() {
        return experimental;
    }
    @Override
    public String complexType() {
        return complexType;
    }
}

旧版兼容实现,访问方式相同,内部使用字段存储。

CheckInfoBuilder

package com.tjshawa.api.check;

import lombok.Builder;
import lombok.Value;

@Value
@Builder
public class CheckInfoBuilder {
    String type;
    String name;
    @Builder.Default
    String description = "";
    @Builder.Default
    boolean experimental = false;
    @Builder.Default
    String complexType = "";
}

CheckType

package com.tjshawa.api.check;

public enum CheckType {
    COMBAT("Combat"),
    MOVEMENT("Movement"),
    PLAYER("Player");

    private final String name;

    CheckType(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    public static CheckType fromPackageName(String packageName) {
        for (CheckType checkType : CheckType.values()) {
            if (packageName.contains(checkType.getName().toLowerCase())) {
                return checkType;
            }
        }
        return null;
    }
}

枚举,定义了三种检测类型:

TatakoCheck

package com.tjshawa.api.check;

public interface TatakoCheck {
    /*
    使用Builder构造的新方法
     */
    CheckInfoBuilder getInfo();

    @Deprecated
    /*
    兼容老程序使用注解读取信息
     */
    CheckInfo getCheckInfo();

    String getPunishCommand();

    boolean isEnabled();

    int getMaxVl();

    int getVl();

    long getLastFlagTime();

    void setVl(int vl);
}

核心接口,所有检测必须实现:

方法说明
getInfo()返回 CheckInfoBuilder(推荐使用)
getCheckInfo()旧版兼容,已弃用
getPunishCommand()惩罚指令
isEnabled()检测是否启用
getMaxVl()最大VL
getVl()当前VL
getLastFlagTime()上次触发检测的时间戳
setVl(int)设置VL

事件监听

TatakoFlagEvent

package com.tjshawa.api.listener;

import com.tjshawa.api.check.TatakoCheck;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;

public final class TatakoFlagEvent extends Event implements Cancellable {

    private boolean cancelled;
    private final Player player;
    private final TatakoCheck check;

    public TatakoFlagEvent(Player player, TatakoCheck check) {
        super(true);
        this.player = player;
        this.check = check;
        this.cancelled = false;
    }

    public Player getPlayer() {return player;}
    public TatakoCheck getCheck() {return check;}

    private static final HandlerList handlers = new HandlerList();
    public HandlerList getHandlers() { return handlers; }
    public static HandlerList getHandlerList() { return handlers; }

    @Override
    public boolean isCancelled() { return cancelled; }
    @Override
    public void setCancelled(final boolean b) { cancelled = b; }
}

当玩家被检测违规时触发,可取消。继承 Cancellable。获取玩家、检测对象。

TatakoSendAlertEvent

package com.tjshawa.api.listener;

import com.tjshawa.api.check.TatakoCheck;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;

public class TatakoSendAlertEvent extends Event implements Cancellable {
    private boolean cancelled;
    private final Player player;
    private final TextComponent message;
    private final TatakoCheck check;
    private final String info;

    public TatakoSendAlertEvent(final TextComponent message, final Player player, final TatakoCheck check, final String info) {
        super(true);
        this.player = player;
        this.message = message;
        this.check = check;
        this.info = info;
        this.cancelled = false;
    }

    private static final HandlerList handlers = new HandlerList();
    public HandlerList getHandlers() { return handlers; }
    public static HandlerList getHandlerList() { return handlers; }

    public Player getPlayer() { return player; }
    public TextComponent getMessage() { return message; }
    public TatakoCheck getCheck() { return check; }
    public String getInfo() { return info; }

    @Override
    public boolean isCancelled() { return cancelled; }
    @Override
    public void setCancelled(final boolean b) { cancelled = b; }
}

发送警报消息前触发,可取消。包含消息 TextComponent、玩家、检测及额外信息。

PassiveModeCheckPlayerEvent

package com.tjshawa.api.listener;

import lombok.Getter;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;

@Getter
public final class PassiveModeCheckPlayerEvent extends Event{

    private final Player player;
    private final boolean check;
    private static final HandlerList HANDLERS = new HandlerList();

    public PassiveModeCheckPlayerEvent(Player player, boolean check) {
        super(true);
        this.player = player;
        this.check = check;
    }

    public static HandlerList getHandlerList() { return HANDLERS; }

    @Override
    public HandlerList getHandlers() { return HANDLERS; }
}

需要被动检测玩家时,由其他插件触发。Tatako监听此事件,并执行被动检查。

注意事项

← 返回主站