Beyond Border Unlocked

绕过原版世界边界的建造和战斗限制。

资源图片
[![Discord](https://img.shields.io/badge/Discord_Server-7289DA?style=flat&logo=discord&logoColor=white)](https://discord.gg/2UTkYj26B4) [![JitPack](https://jitpack.io/v/max1mde/BeyondBorderUnlocked.svg)](https://jitpack.io/#max1mde/BeyondBorderUnlocked) [![Minecraft version](https://img.shields.io/badge/Minecraft%20version-1.19_--_1.21-brightgreen.svg)](https://github.com/max1mde/BeyondBorderUnlocked)

打破或放置方块 & 伤害实体在默认世界边界之外,无需任何客户端侧修改!

## 特性 - 绕过世界边界限制,允许: - 放置方块(仅通过左键点击方块) - 破坏方块 - 战斗和实体互动 - 玩家穿过边界 - 方块超出边界的视觉方块轮廓系统(使用显示实体) - 方块破坏动画和效果 - 具有暴击和基于盔甲和武器的伤害计算的逼真战斗机制 ## 安装 1. 将插件 JAR 和 [packetevents.jar](https://www.spigotmc.org/resources/80279/) 放入您的服务器的 `plugins/` 文件夹 2. 重启/重新加载您的服务器 3. 配置 `plugins/BeyondBorderUnlocked/config.yml` 以满足您的需求 > [!WARNING] > 边界外的这些操作并非游戏设计目的。 > 可能会发生意外错误,并且体验将与正常游戏不同。 > 在生产使用前进行彻底测试。 ## 配置 (`config.yml`) ```yaml building: false # 允许在边界外放置方块 (左键点击) breaking: true # 允许在边界外破坏方块 (左键点击) walkthrough: true # 允许穿过边界 hitting: true # 允许击中边界外的实体 damage: enabled: true # 启用以下自定义边界伤害设置 (如果为 false,则该插件不会在您的世界中修改以下值) buffer: 5.0 # 伤害开始前的距离 amount: 0.2 # 每秒伤害量 blockOutline: enabled: true # 显示边界外的方块轮廓 size: 0.009 # 轮廓段的大小 block: black_stained_glass # 轮廓的方块类型 ``` ## 指令 - `/beyondborder reload` - 重新加载配置 - `/beyondborder set ` - 更改设置 可用设置: - `building`, `breaking`, `walkthrough`, `blockOutline.enabled`, `hitting` (true/false) - `damage.enabled`, `damage.buffer`, `blockOutline.size`, `damage.amount` (数字) - `blockOutline.block` (文本) **权限**: `beyondborder.commands` - 访问指令 (默认: op) ## API 文档 要使用 API,请将 `depends: BeyondBorderUnlocked` 添加到您的 plugin.yml 并将此插件作为仅编译依赖项: ```groovy repositories { maven { url "https://jitpack.io" } } dependencies { compileOnly("com.github.max1mde:BeyondBorderUnlocked:1.0.0") } ``` ### 访问 API ```java BeyondBorderUnlocked plugin = BeyondBorderUnlocked.getInstance(); Config config = plugin.getPluginConfig(); ``` ### 事件 | 事件类 | 异步 | 可取消 | |-------------|-------|-------------| | `BlockBreakBorderEvent` | 否 | 是 | | `BlockPlaceBorderEvent` | 否 | 是 | | `AsyncEntityDamageBorderEvent` | 是 | 是 | | `AsyncEntityInteractBorderEvent` | 是 | 是 | **事件用法示例:** ```java @EventHandler public void onEntityDamage(AsyncEntityDamageBorderEvent event) { if (event.getDamager() instanceof Player) { event.setDamage(event.getDamage() * 1.5); // 例如增加 50% 的伤害 } } ``` ## 已知问题 - 方块只能使用鼠标左键放置 - 穿过世界边界会出错,由于需要玩家传送 - 破坏的方块有时会持续破坏而无需按住鼠标按钮,或者在按住鼠标左键时破坏进度会重置 - 方块选择轮廓框的大小在某些方块上不正确 - 方块破坏、伤害计算和其他交互的机制并不完全准确 ## 工作原理? 默认情况下,Minecraft 客户端不会在边界外发送某些数据包: - 无方块破坏/放置数据包 - 无方块破坏进度数据包 - 客户端未显示方块选择轮廓 本插件通过: 1. 监听手臂摆动动画数据包(始终发送) 2. 计算玩家正在观看的方块 3. 在服务器端模拟适当的操作: - 带有动画和效果的方块破坏 - 带有声音效果的方块放置 方块选择轮廓使用: - 12 个物品显示实体形成 3D 轮廓 - 自定义数据包生成和定位这些实体 - 仅在观看方块的玩家可见 因此,当右键点击边界外时,`building` 功能无法工作,因为客户端不会发送任何数据包。 当玩家左键点击时,唯一发送的数据包是手臂动画数据包。