# 抛掷 (Defenestrate)
这是一个 Spigot 插件,旨在赋予玩家拾取和投掷游戏中大多数方块和实体的能力。你可以为方块、玩家和实体单独自定义投掷力度,并且可以选择禁用任何组的投掷。
## 使用方法
只需在蹲伏状态下,用空手右键点击即可拾取玩家、实体或方块。之后,朝你想要投掷的方向看,然后左键点击即可投掷!
注意:为了在一定程度上为服务器管理员提供生成保护,默认情况下,非操作员玩家将无法拾取/投掷位于 `server.properties` 中定义的生成保护区域内的生物或方块。如果需要,可以在设置中更改此行为。
你可以在此处找到一个“质量非常高”的 stridsfordon 风格演示视频:
## 安装与设置
要安装,只需将最新版本添加到 bukkit 派生服务器的 `Plugins` 文件夹中,然后运行 `/reload`。
设置可以通过修改插件配置文件或使用游戏内 `/dSettings` 命令来更改。
`/dSettings` 命令的使用方法如下:
`/dSettings list` - 列出所有设置及其对应的值
`/dSettings get ` - 返回指定设置的值
`/dSettings set ` - 将指定设置的值设置为指定的值
`/dsettings blacklist ` - 将方块添加到或从黑名单中移除
`/dsettings blacklist ` - 将实体添加到或从黑名单中移除
`/dsettings blacklist ` - 返回指定类别的黑名单列表
## 权限
此插件没有内置的权限管理器。但是,如果你希望设置等级以授予玩家使用此插件部分的权限,你可以使用权限管理器,例如 LuckPerms,来授予玩家这些权限。
`defenestrate.players` - 投掷玩家的权限(仅在 throwPlayersRequiresPermission 为 true 时需要)
`defenestrate.entities` - 投掷实体的权限(仅在 throwEntitiesRequiresPermission 为 true 时需要)
`defenestrate.blocks` - 投掷方块的权限(仅在 throwBlocksRequiresPermission 为 true 时需要)
`defenestrate.settings` - 非操作员使用 `/dSettings` 所需的权限
`defenestrate.all` - 授予所有权限
## 旧的方块处理
旧的方块处理方法使用 Minecraft 的“掉落方块”实体。此问题的在于,掉落方块有随机损坏的习惯。如果你在蹲伏状态下拾取方块,或者仅仅因为身处错误的位置,方块就会掉落。更糟糕的是,当掉落方块落地时,有很大的几率会以物品的形式掉落,而不是以方块的形式放置。
我的解决方案是使用 1.19.4 的 Block Displays 和 Interactions 创建一个“自定义”方块实体,并使用一个非常小的 baby zoglin 来处理重力。这意味着方块实体实际上是堆叠在一起的 3 个实体。如果玩家投掷方块导致服务器开始卡顿,可能值得使用旧的方块处理方法。
## 其他说明
如果投掷力度设置为精确到 1.5,向上投掷方块会使其在空中放置为方块。已经测试过 1.51 和 1.49 的力度,它们正常工作。这是因为存在一个巧合的时机问题,导致插件检查时,方块的速度与静止方块的速度相同。修复此问题需要更多的处理能力,并不值得。
如果服务器崩溃时有方块在飞行,插件在下次启动时可能无法正确清除这些方块。从版本 1.41 开始,现在有一个 `/removeblocks [radius (optional)]` 命令,可以用来杀死所有方块实体(如果没有指定半径),或者仅仅杀死指定半径范围内的方块实体。
## 问题与附加功能
如果你在插件中发现任何问题或对新功能有任何要求,请前往 [issues](https://github.com/Pm7-dev/Defenestrate/issues) 页面并创建一个问题。请务必在问题中尽可能详细地描述 bug/功能请求。