
# 🚫 ForbiddenBlocks 插件 🛡️
## 描述
使用 **ForbiddenBlocks 插件** 增强你的 Minecraft 服务器的游戏体验!🎉 这个强大的插件允许你仔细控制建筑环境,**根据物品的显示名称限制特定物品的放置**。 想象一下防止放置带有名或 Lore 的方块——ForbiddenBlocks 让它变得容易!🛠️
服务器管理员和具有必要权限的玩家可以**禁止或允许物品放置**,提供一个多功能的服务器管理工具。 限制可以**全局**应用,影响所有玩家,或者**专门针对单个玩家**,提供对方块放置的精细控制。 无论你想要防止在生存世界中使用某些装饰性方块,还是限制在特定区域的建造,ForbiddenBlocks 都能给你力量! 🧱➡️⛔
## 安装说明
只需几个简单的步骤即可使用 ForbiddenBlocks 开始:
1. 📥 **下载** ForbiddenBlocks 插件的 JAR 文件。
2. 📂 **将** JAR 文件放入你的 Minecraft 服务器的 `plugins` 目录中。
3. 🔄 **重启** 你的服务器以激活插件。
就这些! ForbiddenBlocks 已经准备好帮助你管理服务器的建筑环境了。 🚀
## 使用方法
使用这些易于使用的命令控制服务器的建筑规则:
### 命令
* `/forbiditem [player|global] [itemName]`: ⛔ **禁止物品放置。**
* 使用此命令来阻止玩家手中的物品放置,或者指定一个 `itemName`。
* 通过玩家姓名指定目标玩家,或者使用 `global` 在整个服务器范围内应用限制。
* 如果省略了 `itemName`,将禁止手中的物品。
* 物品通过它们的 **显示名称** 识别,确保与自定义物品的兼容性。
```
/forbiditem global TNT <- 禁止所有人放置 TNT
/forbiditem Notch Diamond Block <- 禁止 'Notch' 玩家放置钻石方块
/forbiditem global <- 禁止你手中的物品,全局禁止
```
* `/allowitem [player|global] [itemName]`: ✅ **允许物品放置。**
* 反转 `/forbiditem` 的效果,允许先前禁止的物品放置。
* 与 `/forbiditem` 类似,允许你针对玩家或全局设置,并可选地指定一个 `itemName`。
* 如果未提供 `itemName`,则再次允许手中的物品。
```
/allowitem global TNT <- 再次允许所有人放置 TNT
/allowitem Notch Diamond Block <- 再次允许 'Notch' 玩家放置钻石方块
/allowitem global <- 再次允许你手中的物品,全局允许
```
* `/togglemessages`: 💬 **切换放置限制消息。**
* 玩家可以使用此命令来控制他们尝试放置禁止方块时是否收到消息。
* 通过允许玩家在需要时静音通知,个性化游戏体验。
```
/togglemessages <- 切换你的消息通知
```
* `/listforbidden [player]`: 📜 **列出禁止的物品。**
* 显示当前所有禁止的物品的列表。
* 可选地指定一个 `player` 名称来查看专门针对该玩家禁止的物品。
* 如果没有提供玩家名称,则显示全局禁止的物品。
```
/listforbidden <- 列出全局禁止的物品
/listforbidden Notch <- 列出 'Notch' 玩家禁止的物品
```
* `/reloadconfig`: 🔄 **重新加载插件配置。**
* 在不需要服务器重启的情况下,应用对 `config.yml` 文件所做的更改。
* 非常适合快速调整和测试配置更改。
```
/reloadconfig <- 重新加载 config.yml
```
### 权限
使用这些权限微调对 ForbiddenBlocks 命令的访问:
* `forbiddenblocks.forbid`: ⛔ 允许使用 `/forbiditem` 来限制物品放置。
* `forbiddenblocks.allow`: ✅ 允许使用 `/allowitem` 来重新启用物品放置。
* `forbiddenblocks.togglemessages`: 💬 允许使用 `/togglemessages` 来管理通知。
* `forbiddenblocks.list`: 📜 允许使用 `/listforbidden` 查看禁止的物品。
* `forbiddenblocks.reload`: 🔄 允许使用 `/reloadconfig` 重新加载配置。
```yaml
# 权限插件 (如 LuckPerms) 中的示例
groups:
admin:
permissions:
- forbiddenblocks.* # 向管理员授予所有 ForbiddenBlocks 权限
builder:
permissions:
- forbiddenblocks.list # 允许构建者列出禁止的物品
```
## 配置
通过编辑位于插件文件夹中的 `config.yml` 文件来定制 ForbiddenBlocks 以完全满足服务器的需求。
以下是配置选项的说明:
* **Messages**: ✉️ 根据你的喜好定制游戏内的消息!
* 自定义插件为不同动作发送的每一条消息 (例如,当一个物品被禁止或当玩家收到通知时)。
* 使用 **MiniMessage 格式化标签** 添加丰富的文本格式,如颜色 ``、样式 `` 等!✨
* 参考 `config.yml` 获取默认消息示例,并充分发挥你的创造力!🎨
* **可用的消息路径:**
* `messages.cannotPlace`: 当玩家尝试放置禁止方块时的消息。
* `messages.itemForbidden`: 成功禁止物品时的消息。
* `messages.itemAllowed`: 成功允许物品时的消息。
* `messages.mustHoldNamedItem`: 当使用 `/forbiditem` 或 `/allowitem` 时,未持有带有名物品的消息。
* `messages.noPermission`: 通用的无权限消息。
```yaml
messages:
cannotPlace: "🚫 你不允许在这里放置 - !
"
itemForbidden: "✅ - 现在被禁止了!
"
itemAllowed: "✅ - 现在可以再次放置了!
"
mustHoldNamedItem: "⚠️ 你必须手持一个带有显示名称的物品! "
noPermission: "❌ 你没有使用此命令的权限。 "
```
* **Options**: ⚙️ 全局插件设置。
* `sendMessages`: 一个布尔选项 (true/false),用于全局控制插件是否向玩家发送限制消息。
* `true` (默认): 玩家尝试放置禁止方块时会发送消息。
* `false`: 不发送任何消息,提供静默限制。
```yaml
options:
sendMessages: true
```
* **playerForbiddenItems**: 🗂️ 精确管理禁止的物品。
* 此部分定义了对全局和特定玩家禁止放置的物品。
* 插件会检查正在放置的物品的 **显示名称** 与这些配置是否匹配。
* `global`: 一个被所有玩家禁止的物品显示名称列表,定义在 `config.yml` 的 `playerForbiddenItems.global` 下。
* 在此处添加物品显示名称以实施服务器范围内的限制。
* 支持纯文本物品名称、命名空间键 (如 `minecraft:bedrock`),甚至 MiniMessage 格式化的显示名称以进行高级物品自定义。
```yaml
playerForbiddenItems:
global:
- "TNT"
- "Minecraft:Bedrock" # 使用命名空间的示例
- "超级爆炸盒子" # 使用 MiniMessage 格式化的示例
```
* `PlayerName`: 使用他们的确切玩家名称为**单个玩家**创建部分。
* 在每个玩家名称下,列出专门针对该玩家禁止的物品显示名称。
* 这允许对每个玩家进行高度自定义的构建权限!
```yaml
playerForbiddenItems:
global:
- "TNT"
Notch: # 'Notch' 玩家的特定限制
- "橡木原木"
- "橡木木板"
```
## 工作原理 ⚙️
ForbiddenBlocks 插件的工作方式如下:
1. **监听方块放置事件:** 插件注册了一个事件侦听器,该侦听器监视 Minecraft 服务器中的 `BlockPlaceEvent`。每当玩家尝试放置方块时,都会触发此事件。👂
2. **检查物品显示名称:** 当发生方块放置事件时,插件会检索玩家手中的物品,并检查它是否具有显示名称。然后它使用 MiniMessage 将此显示名称序列化为字符串。🏷️
3. **验证禁用的列表:** 然后,插件会检查此显示名称与两个列表:
* **全局禁止的物品:** 所有玩家禁止的物品列表,定义在 `config.yml` 中 `playerForbiddenItems.global` 下。🌎
* **特定玩家禁止的物品:** 针对特定玩家禁止的物品列表,也在 `config.yml` 中 `playerForbiddenItems.PlayerName` 下定义。👤
4. **取消放置并通知玩家:** 如果放置的物品的显示名称在全局或特定玩家禁止列表中都找到,插件会取消 `BlockPlaceEvent`,从而防止放置方块。🚫
* 如果配置中启用 (`options.sendMessages: true`),插件会向玩家发送自定义消息,告知他们不允许放置该方块。💬
此过程确保方块放置限制平稳高效地执行,增强了服务器对建筑环境的控制。 ✨
## 贡献
🤝 **欢迎贡献!** 如果您对改进、新功能或错误修复有任何想法,请随时贡献!
* 提交包含您更改的 **拉取请求**。
* 打开 **问题** 以讨论错误或建议增强功能。
让我们共同努力,使 ForbiddenBlocks 变得更好! 🚀
## 许可证
本项目采用 **MIT 许可证** 授权。 根据许可证条款随意使用、修改和分发。 📄