Skip to content

cyf112233/fuckportal

Repository files navigation

FuckPortal — 非规则下界传送门插件

概述

FuckPortal 是一款创新性的 Minecraft 服务器插件,它彻底改变了传统下界传送门的建造限制。本插件允许玩家在单一竖直平面内使用任意闭合形状的黑曜石和哭泣黑曜石边界(包括非矩形、凹多边形等复杂形状)来生成下界传送门。插件提供高度可配置的选项,并新增了经济系统支持,让服务器管理更加灵活。

功能特色

  • 突破形状限制:支持任意闭合形状的传送门设计
  • 经济系统集成:可配置的建造费用机制
  • 智能验证系统:自动检测合法传送门结构
  • 性能优化:可调节的洪水填充速度
  • 权限控制:细粒度的权限管理
  • 高度可配置:所有关键参数均可通过配置文件调整

安装指南

构建插件

  1. 确保已安装 Java JDK 和 Gradle
  2. 在项目根目录执行构建命令:
    • Windows: gradlew.bat build
    • Linux/macOS: ./gradlew build
  3. 构建完成后,在 build/libs/ 目录下找到生成的 JAR 文件

安装到服务器

  1. 将构建好的 JAR 文件放入服务器的 plugins/ 目录
  2. 启动或重启服务器
  3. 插件会自动生成配置文件 plugins/FuckPortal/config.yml

配置说明

配置文件位于 plugins/FuckPortal/config.yml,包含以下选项:

# FuckPortal configuration

# 每个传送门方块的费用(需安装经济插件)
portal-cost-per-block: 10.0

# 传送门费用确认超时时间(秒)
portal-confirm-timeout: 10

# 单个非规则下界门的最大"内域"方块数量限制(单位:方块数)
# 最小值为 1(仅一个洞)。若填写小于 1 的值将按 1 处理
max-portal-size: 2048

# 每 tick 最多进行的"洪水扩展"步数(访问/判定的方块数)
# 数值越小越平滑,占用主线程时间更短但完成更慢
# 数值越大完成更快但可能产生瞬时卡顿
# 建议范围 64-512,默认 256
flood-per-tick: 256

修改配置后需重启服务器或使用 /reload 命令使更改生效(推荐重启服务器以确保稳定性)。

使用教程

基本用法

  1. 使用黑曜石和哭泣黑曜石在同一个竖直平面内围出任意闭合图形
    • 可选的平面方向:
      • X固定的 Y-Z 平面
      • Z固定的 Y-X 平面
  2. 确保图形内部为空气、火或已有传送门方块
  3. 手持打火石右键点击图形内部任意位置:
    • 可直接点击内部空气
    • 或对着边界点击导致相邻空气被点燃

经济系统

当经济插件(如 Vault)存在时:

  1. 玩家创建传送门前会收到费用提示
  2. 费用计算公式:总费用 = 传送门内部方块数 × portal-cost-per-block
  3. 玩家有 portal-confirm-timeout 秒时间确认支付
  4. 余额不足或超时未确认将取消传送门创建

权限节点

  • byd.fuckportal.free - 免费用创建任意形状传送门(默认OP拥有)
  • byd.fuckportal.create - 允许创建传送门(默认所有玩家拥有)

技术细节

事件监听

  • BlockIgniteEvent(点火事件)
  • PlayerInteractEvent(玩家交互事件,确保在各种环境下都能触发)

验证规则

  1. 边界检查:
    • 仅接受黑曜石(OBSIDIAN)和哭泣黑曜石(CRYING_OBSIDIAN)作为边界
    • 边界必须完全闭合
  2. 内部空间检查:
    • 可填充方块:AIR、FIRE、NETHER_PORTAL
  3. 平面限制:
    • 必须在单一固定坐标轴平面内(Y与X/Z平面)

填充算法

  • 使用BFS(广度优先搜索)算法进行洪水填充
  • 每tick处理量由 flood-per-tick 控制
  • 最大填充面积由 max-portal-size 限制

常见问题解答

传送门无法创建

Q: 点火后没有反应怎么办? A:

  1. 确认点击的是内部空间或朝向内部的方向
  2. 检查服务器控制台是否显示插件加载成功
  3. 验证边界是否完全由黑曜石/哭泣黑曜石构成且完全闭合
  4. 检查是否有其他插件拦截了相关事件

经济系统问题

Q: 费用没有扣除或提示不显示? A:

  1. 确认已安装Vault及兼容的经济插件
  2. 检查玩家是否有足够余额
  3. 查看服务器日志是否有经济插件相关的错误

性能问题

Q: 创建大型传送门时服务器卡顿? A:

  1. 降低 flood-per-tick 值(如设为128)
  2. 减小 max-portal-size 限制
  3. 避免玩家同时创建多个大型传送门

高级功能

自定义形状示例

  1. 星形传送门
  2. 圆形传送门
  3. 字母形状传送门
  4. 不规则艺术造型传送门

开发者API

插件提供以下扩展点:

  1. 自定义边界方块类型
  2. 自定义费用计算逻辑
  3. 传送门创建前后的事件钩子

支持与贡献

欢迎通过以下方式参与项目改进:

  • 提交 issue 报告问题或建议
  • 发起 Pull Request 贡献代码
  • 参与文档翻译和完善

项目维护者:cxkcxkckx

About

使你的传送门玩出更多花样

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages