Better_ip_use

Better_ip_use

This is a plugin that improves the Minecraft server experience and quality using IP, featuring high performance, multi-compatibility, and high configurability.

157 downloads 0 followers

Better IP Use (BIU)

报告问题及发布:https://github.com/my-txz/better_ip_use/issues

Reporting issues and publishing:https://github.com/my-txz/better_ip_use/issues

Spigot 1.19–1.20.4
Java 17 Java 21

A lightweight, conflict-resistant Minecraft plugin that displays player geolocation and filters inappropriate chat using built-in integrations with Uapipro APIs. Features include smart location formatting, sensitive word detection, chat cooldowns, and a community-driven reporting system.

一款轻量级、抗冲突的 Minecraft 插件,通过内置 Uapipro API 集成实现玩家地域显示与聊天内容过滤。包含智能地域格式化、敏感词检测、发言冷却及社区举报系统。

🙏 Special thanks to Uapipro for providing reliable public APIs used in this plugin.
🙏 特别鸣谢 Uapipro 提供稳定可靠的公共 API 支持。


Tips:

Version download corresponds to:

1.X supports 1.19-1.20.6 | 2.X supports 1.20.6-1.21.11 | 3. X supports 1.13-1.18.2 (in development)


✨ Core Features

🌍 Smart Geolocation Display

Fetches region data via https://uapis.cn/api/v1/network/ipinfo?ip=%IP% and formats it consistently across three interfaces:

  • Tab List: Appends as suffix → Steve [中国 北京]
  • Chat Message: Rewrites format → Steve[中国 北京]: Hello!
  • Nametag (Above Head): Uses prefix for visibility → [中国 北京] Steve

By default, regions are auto-trimmed to the first two space-separated parts (e.g., "中国 北京 海淀区" → "中国 北京"). Configurable via display.region_format: auto | full.

🚫 Sensitive Word Filtering

Uses https://uapis.cn/api/v1/sensitive-word/quick-check to detect violations. A message is flagged if:

  • Response contains "status": "forbidden", or
  • The forbidden_words array has ≥1 entry.

Punishment flow:

  1. First offense → warning
  2. Repeat offense → mute (default: 5 minutes)
  3. Optional broadcast on mute

Bypass permission: better_ip_use.bypass.

⏳ Chat Cooldown System

Prevents spam by enforcing a configurable delay between messages (default: 5 seconds). Players see a countdown when violating.

📢 Community Reporting (/biu report <player>)

Players can report others for recent inappropriate speech:

  • Checks up to 3 messages from the last 5 minutes
  • Reporter cooldown: 5 minutes (configurable)
  • If any message violates rules, target is automatically muted
  • Fully asynchronous — no server lag

♻️ Resource Efficiency & Cleanup

  • IP-to-region results are cached per player
  • All player data (cache, history, mutes) is cleaned on quit
  • Manual cache clearing via /biu clearcache
  • Chat history automatically expires after 10 minutes to save memory

⚙️ Conflict-Aware Event Handling

  • Display updates use EventPriority.MONITOR — runs after plugins like Essentials/CMI
  • Chat formatting uses EventPriority.HIGH — reliably overrides most chat systems

⚠️ Requirements

  • Minecraft: Spigot/Paper 1.19 to 1.20.4 (inclusive)
  • Java: 17+
  • Internet Access: Must reach uapis.cn

❗ This plugin currently only supports Java 17 and Minecraft 1.19–1.20.4.
❗ 本插件目前仅支持 Java 17 及 Minecraft 1.19–1.20.4。

🔧 We are currently adapting BIU for Bukkit. You may try it at your own risk.
🔧 我们正在对 Bukkit 进行适配,可以自行进行尝试。


🔧 Configuration Highlights (config.yml)

# 语言设置: zh / en
language: "zh"

# 功能开关
settings:
  # 启用聊天合规检查
  enable_chat_check: true
  # 启用预审核模式 (true = 发送后审核再显示, false = 实时审核拦截)
  # true: 玩家发送 -> 服务器审核 -> 通过则广播显示, 不通过则屏蔽
  # false: 玩家发送 -> 实时检测 -> 违规则拦截并取消事件
  pre_moderation: true
  # 启用 IP 显示 (Tab/头顶/聊天)
  enable_ip_display: true

# 聊天冷却设置
chat_cooldown:
  enabled: true
  # 冷却时间 (秒)
  seconds: 5

# 举报系统设置
report_system:
  enabled: true
  # 检查几分钟内的消息
  check_minutes_ago: 5
  # 举报冷却时间 (秒)
  reporter_cooldown_seconds: 300
  # 每次最多检查几条消息
  max_check_messages: 3

# API 配置
api:
  sensitive_word:
    # 正确的API端点 - 使用uapis.cn的敏感词检测接口
    url: "https://uapis.cn/api/v1/text/profanitycheck"
  ip_info:
    # IP信息查询接口模板
    url_template: "https://uapis.cn/api/v1/network/ipinfo?ip=%IP%"

# 显示设置
display:
  region_format: "auto" # auto (取前两级) 或 full (完整)
  color: "&3"
  unknown_text: "Unknown"

  # Tab 列表后缀
  tab_suffix_enabled: true
  # 聊天后缀
  chat_suffix_enabled: true
  # 头顶前缀
  nametag_prefix_enabled: true

# 处罚设置
punishment:
  warn_first: true
  mute_minutes: 5
  broadcast_on_mute: true

# 消息多语言配置
messages:
  zh:
    prefix: "&3[&bBIU&3] &r"
    warn: "&c您的发言包含不合规内容,请注意文明用语。"
    cooldown: "&c请勿频繁发言,还需等待 &e%time% &c秒。"
    mute: "&c你因多次违规已被禁言 %mute_minutes% 分钟。"
    mute_admin: "&c你已被管理员禁言。"
    mute_active: "&c你当前处于禁言状态,无法发言。"
    mute_broadcast: "&c玩家 &e%player% &c因多次违规已被禁言 %mute_minutes% 分钟。"
    unmuted: "&a你已被解除禁言,可以正常发言了。"
    unmuted_auto: "&a你的禁言时间已到,已自动解除禁言。"
    reload: "&a配置已重载。"
    cache_cleared: "&aIP地址缓存已清除,所有玩家显示已重置。"
    no_permission: "&c你没有权限执行此操作。"
    help: |
      &a/biu help &7- 显示帮助
      &a/biu reload &7- 重载配置
      &a/biu clearcache &7- 清除IP缓存
      &a/biu report <玩家> &7- 举报玩家近期违规发言
      &a/biu mute <玩家> &7- 手动禁言玩家
      &a/biu unmute <玩家> &7- 解除玩家禁言
      &a/biu check <文本> &7- 检测文本是否违规
    report_usage: "&c用法: /biu report <玩家名>"
    report_disabled: "&c举报系统当前已禁用。"
    report_cooldown: "&c举报功能冷却中,还需等待 &e%time% &c秒。"
    report_self: "&c不能举报自己。"
    report_target_no_history: "&c该玩家近期无可举报的发言记录。"
    report_checking: "&a正在检查玩家 &e%player% &a的近期发言..."
    report_success_compliant: "&a举报检查结果:玩家 &e%player% &a近期发言合规。"
    report_success_forbidden: "&c举报检查结果:玩家 &e%player% &c存在违规发言,已自动禁言。"
    report_broadcast: "&c玩家 &e%player% &c因被举报违规发言,已被系统禁言。举报者: &e%reporter%"
    mute_cmd_usage: "&c用法: /biu mute <玩家名>"
    unmute_cmd_usage: "&c用法: /biu unmute <玩家名>"
    player_muted: "&c已手动禁言玩家 &e%player%&c。"
    player_unmuted: "&a已解禁玩家 &e%player%&a。"
    player_not_found: "&c未找到玩家: &e%player%&c。"

  en:
    prefix: "&3[&bBIU&3] &r"
    warn: "&cYour message contains non-compliant content. Please be civil."
    cooldown: "&cPlease do not spam. Wait &e%time% &cseconds."
    mute: "&cYou have been muted for %mute_minutes% minutes due to repeated violations."
    mute_admin: "&cYou have been muted by an administrator."
    mute_active: "&cYou are currently muted and cannot chat."
    mute_broadcast: "&cPlayer &e%player% &chas been muted for %mute_minutes% minutes."
    unmuted: "&aYou have been unmuted. You can chat normally now."
    unmuted_auto: "&aYour mute time has expired. You can chat normally now."
    reload: "&aConfiguration reloaded."
    cache_cleared: "&aIP address cache cleared."
    no_permission: "&cYou do not have permission."
    help: |
      &a/biu help &7- Show help
      &a/biu reload &7- Reload config
      &a/biu clearcache &7- Clear IP cache
      &a/biu report <player> &7- Report a player for recent bad chat
      &a/biu mute <player> &7- Manually mute a player
      &a/biu unmute <player> &7- Unmute a player
      &a/biu check <text> &7- Check if text violates rules
    report_usage: "&cUsage: /biu report <player>"
    report_disabled: "&cReport system is currently disabled."
    report_cooldown: "&cReport function is on cooldown. Wait &e%time% &cseconds."
    report_self: "&cYou cannot report yourself."
    report_target_no_history: "&cTarget player has no recent chat history to report."
    report_checking: "&aChecking recent messages from &e%player%&a..."
    report_success_compliant: "&aReport Result: Player &e%player% &ais compliant."
    report_success_forbidden: "&cReport Result: Player &e%player% &cviolated rules. Auto-muted."
    report_broadcast: "&cPlayer &e%player% &cwas muted due to report. Reporter: &e%reporter%"
    mute_cmd_usage: "&cUsage: /biu mute <player>"
    unmute_cmd_usage: "&cUsage: /biu unmute <player>"
    player_muted: "&cPlayer &e%player%&c has been manually muted."
    player_unmuted: "&aPlayer &e%player%&c has been unmuted."
    player_not_found: "&cPlayer not found: &e%player%&c."

All display elements share the same color and fallback text.


📜 Commands & Permissions

Command Permission Description
/biu help better_ip_use.use Show help
/biu reload better_ip_use.reload Reload config
/biu clearcache better_ip_use.reload Clear IP cache
/biu report <player> better_ip_use.use Report player’s recent chat
/biu mute <player> better_ip_use.admin Manually mute player
/biu unmute <player> better_ip_use.admin Unmute player

Default permissions: ops only. Tab completion supported.


📦 Deployment

  1. Place BetterIPUse.jar in plugins/
  2. Start server to generate config.yml
  3. Adjust settings if needed (defaults work out-of-box with Uapipro)
  4. Use /biu reload after changes

No extra dependencies — uses Spigot’s built-in Gson.


No telemetry, no ads, no hidden features.
无遥测、无广告、无隐藏功能。

Complies with Modrinth Community Guidelines.
遵守 Modrinth 社区规范。

Version Minecraft Loader Download

Better_ip_use 1.1-beta

1.1-beta

1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, purpur, spigot
Download

Better_ip_use 1.0-Release

1.0-Release

1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6
bukkit, paper, purpur, spigot
Download

Better_ip_use 2.0-bata

2.0-bata

1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9
bukkit, paper, purpur, spigot
Download

Better_ip_use 1.0-beta-3

1.0-beta-3

1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4
bukkit, paper, purpur, spigot
Download

Better_ip_use 1.0-beta-2

1.0-beta-2

1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4
bukkit, paper, purpur, spigot
Download

Better_ip_use 1.0-beta

1.0-beta

1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4
bukkit, paper, purpur, spigot
Download

Better_ip_use 1.0-SNAPSHOT

1.0-SNAPSHOT

1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4
bukkit, paper, purpur, spigot
Download