Soul Graves

一个独特的墓地插件,玩家收集灵魂以找回他们的物品。

资源图片
# 🪦Soul Graves🪦 一个独特的墓地插件,玩家收集自己的灵魂以在死亡时找回他们的物品。 死亡地点会生成一个灵魂,提供音频和视觉反馈以帮助您找到它。 找到后,您可以进入您的灵魂来找回您的物品。 小心,等太久,您的灵魂将会爆炸,掉落您所有的物品! 特别感谢 [Catnies](https://github.com/Catnies) 和 [ShiroKazane](https://github.com/ShiroKazane) 对该项目的贡献! ## 功能 ### ⭐ 核心机制 - 玩家死亡时,Soul Graves 会生成一个灵魂,存储他们的物品。 - 避免在液体、虚空或非实体方块中生成灵魂。 - 灵魂可以持续重启服务器。 - 可以自定义每个玩家的活跃灵魂数量,并提供无限选项。 - 能够限制灵魂收集仅限于其所有者。 - 配置选项,暂停所有者离线时的灵魂倒计时器。 - 禁用在特定世界生成灵魂。 ### ✨ 视觉和音频反馈 - 视觉提示指示灵魂即将爆炸时。 - 可配置半径内的玩家将听到心跳声以引导他们找到附近的灵魂。 - 可选且可自定义的提示粒子,可直接引导玩家找到他们的灵魂。 - 选择为灵魂收集、灵魂爆炸和通知玩家播放哪些声音。 - 灵魂的所有者和附近的玩家都可以收到灵魂状态更改的通知。 ### 💎 物品和经验处理 - 可以配置灵魂在爆炸时只掉落物品、经验或两者。 - 为所有者和非所有者分别设置不同的经验返回百分比。 - 选项是当灵魂爆炸时销毁或分散物品/经验。 ### 🌐 跨服务器支持 - 跨服务器支持,使用 MySQL 和 Redis 提供无缝体验。 ### 🪙 经济支持 - 配置玩家前往灵魂的成本。 ### 🛠️ 自定义和开发者 API - 所有消息都可完全自定义,并使用 MiniMessage 格式。 - 自定义 API 可供开发人员使用,以进一步自定义 Soul Graves。 ## 兼容性 - **WorldGuard**: 标志用于在特定区域中禁用灵魂生成。 - **Towny**: 支持他们的各种“保存物品”选项。 - **Soulbound Enchantment 插件**: - Vane - ExcellentEnchats - EcoEnchants ## 展示
等待收集的稳定灵魂
---
即将爆炸并掉落其内容的不稳定灵魂
## 命令和权限 - **/soulgraves** 或 **/sg**: Soul Graves 的主命令。 将向发送者提供版本信息。 - 权限:`soulgraves.command` - **/soulgraves reload**: 重新加载插件的配置文件。 - 权限:`soulgraves.command.reload` - **/soulgraves back**: 将发送者传送到他们的最新灵魂。 仅适用于游戏中。 - 权限:`soulgraves.command.back` #### 其他权限 - `soulgraves.spawn`: 如果 `permission-required` 在 config 中设置为 true,则允许生成灵魂。 ## 配置
config.yml ```yml # DO NOT EDIT file-version DIRECTLY file-version: 4 # 如果设置为 true,玩家将需要 "soulgraves.spawn" 权限才能在死亡时生成灵魂 permission-required: false # 灵魂保持稳定状态的时间(以秒为单位),然后再变为不稳定状态 time-stable: 240 # 灵魂变为不稳定状态并爆炸前的持续时间(以秒为单位) # 灵魂可供收集的总时间是 time-stable + time-unstable time-unstable: 60 # 玩家传送到灵魂的成本,设置为 0.0 以禁用 teleport-cost: 0.0 # 当灵魂的所有者离线时,是否冻结计时器 # 此功能无法检测代理服务器上子服务器中玩家的在线状态 offline-owner-timer-freeze: false # 是否在灵魂爆炸时通知附近的玩家 notify-nearby-players: true # 提醒附近的玩家灵魂爆炸的半径(以方块为单位) notify-radius: 128 # 当另一个玩家收集了灵魂时,是否通知灵魂的所有者 notify-owner-pickup: true # 灵魂被所有者收集时,给予灵魂所有者的经验百分比 xp-percentage-owner: 0.5 # 灵魂被非所有者收集时,给予玩家的经验百分比 xp-percentage-others: 0.2 # 灵魂爆炸时,给予的经验百分比 xp-percentage-burst: 0.2 # 灵魂是否只能被其所有者收集 owner-locked: false # 玩家可以同时持有的灵魂的最大数量。 设置为 0 表示无限。 # 如果超出限制,将爆炸最古老的灵魂 max-souls-per-player: 0 # 灵魂爆炸是否会掉落物品 souls-drop-items: true # 灵魂爆炸是否会掉落经验 souls-drop-xp: true # 创建灵魂时是否存储物品 # 如果 souls-store-items 和 souls-store-xp 都为 false,则不会生成灵魂 souls-store-items: true # 创建灵魂时是否存储经验 # 如果 souls-store-items 和 souls-store-xp 都为 false,则不会生成灵魂 souls-store-xp: true # 播放灵魂收集时使用的声音 # 格式为 'soundEvent, 音量, 音调' # soundKey 可以在 https://minecraft.wiki/w/Sounds.json#Java_Edition_values 下的 'Sound Event' 列中找到 pickup-sound: enabled: true sounds: - 'minecraft:block.amethyst_block.break, 1.0, 0.5' - 'minecraft:entity.player.levelup, 1.0, 2.0' - 'minecraft:block.amethyst_block.resonate, 1.0, 0.5' # 播放灵魂爆炸时使用的声音 # 格式为 'soundEvent, 音量, 音调' # soundKey 可以在 https://minecraft.wiki/w/Sounds.json#Java_Edition_values 下的 'Sound Event' 列中找到 burst-sound: enabled: true sounds: - 'minecraft:block.glass.break, 3.0, 1.0' - 'minecraft:entity.vex.death, 3.0, 0.5' - 'minecraft:entity.allay.death, 3.0, 0.5' - 'minecraft:entity.warden.sonic_boom, 3.0, 0.5' # 播放给附近的玩家提醒灵魂爆炸时使用的声音 # 格式为 'soundEvent, 音量, 音调' # soundKey 可以在 https://minecraft.wiki/w/Sounds.json#Java_Edition_values 下的 'Sound Event' 列中找到 notify-nearby-sound: enabled: true sounds: - 'minecraft:block.amethyst_block.resonate, 1.0, 1.0' # 播放给所有者灵魂爆炸时使用的声音 # 格式为 'soundEvent, 音量, 音调' # soundKey 可以在 https://minecraft.wiki/w/Sounds.json#Java_Edition_values 下的 'Sound Event' 列中找到 notify-owner-burst-sound: enabled: true sounds: - 'minecraft:block.amethyst_block.break, 1.0, 0.5' # 播放给所有者另一名玩家收集他们的灵魂时使用的声音 # 格式为 'soundEvent, 音量, 音调' # soundKey 可以在 https://minecraft.wiki/w/Sounds.json#Java_Edition_values 下的 'Sound Event' 列中找到 notify-owner-pickup-sound: enabled: true sounds: - 'minecraft:block.beacon.deactivate, 1.0, 0.5' # 禁用灵魂在哪些世界中生成 # 如果为空,则留空数组 # 用法: # disabled-worlds: # - world_nether # - world_the_end disabled-worlds: [] # 控制哪些将在玩家灵魂周围显示以引导玩家的粒子 # activation-radius 设置为 0,则始终显示提示粒子 hint-particles: enabled: true activation-radius: 128 # 灵魂周围显示提示粒子的半径,设置为 0 以始终显示提示粒子 tracked-soul: 'OLDEST' # 如果玩家有多个灵魂,应该跟踪哪个灵魂? 选项:OLDEST, NEWEST particle-type: 'END_ROD' start-distance: 5 # 粒子应该从玩家开始到灵魂的距离 mode: 'TRAIL' # 选项:TRAIL, WANDER trail: length: 8 # 粒子朝灵魂的尾迹应该有多长 density: 2 # 每个方块距离生成多少粒子 wander: count: 5 # 应该生成多少粒子 min-speed: 0.2 # 粒子的最小速度 max-speed: 0.6 # 粒子的最大速度 ```
database.yml ```yml # DO NOT EDIT file-version DIRECTLY file-version: 1 # 注意: 如果您更改此配置,则需要重启服务器才能使更改生效。 # 选项: PDC, CROSS_SERVER # 如果使用 CROSS_SERVER,则必须配置 MySQL 和 Redis 部分 storage-mode: PDC # 跨服务器存储的服务器名称 # 确保每个服务器的名称在跨服务器存储时是唯一的 # 警告: 使用 CROSS_SERVER 存储时,初始化数据库后更改此值将导致数据丢失 server-name: "lobby" # 跨服务器存储的数据库配置 # 如果您的数据库支持,请将 useSSL 设置为 true MySQL: jdbc-url: "jdbc:mysql://localhost:3306/minecraft?useSSL=false&autoReconnect=true" jdbc-class: "com.mysql.cj.jdbc.Driver" properties: user: "username" password: "password" Redis: uri: "redis://localhost:6379/0" ```
messages.yml ```yml # DO NOT EDIT file-version DIRECTLY file-version: 4 # 向玩家发送的消息,当他们运行重新加载命令时 soul-graves-reload: "[Soul Graves] 配置已重新加载!" # 向灵魂的所有者发送的消息,当他们的灵魂爆炸时 soul-burst: "☠ 您的灵魂已爆炸!" # 向灵魂的所有者发送的消息,当他们的灵魂爆炸并且 souls-drop-items 为 true 时 soul-burst-drop-items: "☀ 您身内的所有物品已被散落!" # 向灵魂的所有者发送的消息,当他们的灵魂爆炸并且 souls-drop-items 为 false 时 soul-burst-lose-items: "✖ 您身内的所有物品已被摧毁!" # 向附近的玩家发送的消息,当灵魂爆炸时 soul-burst-nearby: "☠ 附近一个灵魂已爆炸。" # 向玩家收集灵魂时发送的消息 soul-collect: "✦ 您已收集灵魂的物品!" # 向灵魂的所有者发送的消息,当另一个人收集了他们的灵魂时 soul-collect-other: "⚑ 另一个人收集了您的灵魂!" # 当翻新的灵魂数量超过玩家的限制时(最古老的会爆炸)发送的消息 soul-limit-explode: "⚠ 达到了灵魂限制 (%max%),您的最古老的灵魂已爆炸!" # 当玩家试图返回他们的灵魂,但没有灵魂时发送的消息 command-back-no-soul: "✖ 您没有灵魂可以传送到。" # 当玩家没有足够的资金来返回他们的灵魂时发送的消息 command-back-no-funds: "✖ 您没有足够的资金来传送到您的灵魂。" # 当玩家在没有成本的情况下成功返回他们的灵魂时发送的消息 command-back-success-free: "✔ 您已传送到您的灵魂。" # 当玩家成功返回他们的灵魂时发送的消息 command-back-success-paid: "✔ 您已花费 %cost% 币传送到您的灵魂。" ```
## API
Maven ```xml jitpack.io https://jitpack.io ``` ```xml com.github.FaultyFunctions SoulGraves TAG ```
Gradle ```groovy dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { mavenCentral() maven { url 'https://jitpack.io' } } } ``` ```groovy dependencies { implementation 'com.github.FaultyFunctions:SoulGraves:TAG' } ```
将 `TAG` 替换为 GitHub 上您所选版本的发行标签。 ## 第三方插件 - [SoulGravesPlus](https://github.com/JosTheDude/SoulGravesPlus) 由 [@JosTheDude](https://github.com/JosTheDude) ## 路线图 * [提出建议!](https://github.com/FaultyFunctions/SoulGraves/issues) ## 致谢 - [Vanilla Refresh](https://modrinth.com/datapack/vanilla-refresh) - 基于他们“灵魂链接”的想法。 - [B's Ghost Graves](https://modrinth.com/plugin/bs-ghostgrave) - 类似的插件,灵感来自 Hollow Knight。 他们分享了他们的源代码,因此我可以从中学习,非常感谢! - [MorePersistentDataTypes](https://github.com/mfnalex/MorePersistentDataTypes) - 优秀的 PDC 库 - [BoostedYAML](https://github.com/dejvokep/boosted-yaml) - YAML 配置库 - [HikariCP](https://github.com/brettwooldridge/HikariCP) - 用于处理 JDBC 连接 - [Lettuce](https://github.com/redis/lettuce) - 发送/接收 Redis 消息 - [Lamp](https://github.com/Revxrsal/Lamp) - Minecraft 命令库 - [rtag](https://github.com/saicone/rtag) - 读取/写入 NBT 数据 - [adventure](https://github.com/KyoriPowered/adventure) - Minecraft 的 UI 库 - [bStats](https://github.com/Bastian/bStats) - 插件跟踪指标