一个允许玩家控制生物生成的Spigot插件。
这个插件与 Minecraft 1.8 及以上版本的游戏兼容,包括任何未来的版本。除非 API 发生重大变化,否则我不需要更新插件以支持新的 Minecraft 版本。
所需插件:这个插件需要 DecentHolograms 插件才能运行:[https://www.spigotmc.org/resources/decentholograms-1-8-1-21-1-papi-support-no-dependencies.96927/](https://modrinth.com/plugin/decentholograms)
MagicalCrafting 允许管理员定义结构,例如祭坛,玩家稍后可以自行建造这些祭坛。这些祭坛允许玩家牺牲物品以获得新的物品。祭坛有一个核心方块作为主要成分(必需),以及用于其他成分的基座方块(可选)。
管理员可以创建、删除和编辑结构蓝图和配方。配方可以特定于某些祭坛,也可以跨多个祭坛共享。配方编辑,包括更改成分、主要成分、结果和制作时间,都通过易于使用的图形界面完成。
当玩家在核心或基座方块上放置物品时,该物品将漂浮在相应的方块上方。


命令和权限
/craftstructure [id] {remove}
- 描述:在两个选定点之间定义一个结构。
- 用法:/craftstructure [id] {remove}
- remove 是可选的;如果包含此参数,则会删除结构。
- 别名:/cstructure, /cstruct
- 权限:magicalcrafting.managestructure
/crrecipe [add/remove] [id]
- 描述:添加或删除具有特定 ID 的配方。
- 用法:/crrecipe [add/remove] [id]
- 权限:magicalcrafting.createremove
/lrecipe
- 描述:显示配方 ID 列表。
- 用法:/lrecipe
- 别名:/lrecipes
- 权限:magicalcrafting.list
/editrecipe [id]
- 描述:编辑特定配方的属性。
- 用法:/editrecipe [id]
- 权限:magicalcrafting.editrecipe
/magicalcrafting
- 描述:重新加载插件的配置。
- 用法:/magicalcrafting
- 权限:magicalcrafting.reload
/scrr [add/remove] [structureId/] [recipeId/]
- 描述:修改结构的可用配方。
- 用法:/scrr [add/remove] [structureId/*] [recipeId/*]
- 权限:magicalcrafting.structureaddremoverecipe
/srstructure [id]
- 描述:显示与所选结构关联的配方。
- 用法:/srstructure [id]
- 权限:magicalcrafting.seerecipes
/mcarfriend [add/remove] [name]
- 描述:从您的祭坛设置中添加/删除朋友
- 用法:/mcarfriend [add/remove] [playerName]
- 权限:magicalcrafting.addremovefriends
/oasgui
- 描述:编辑您的祭坛设置
- 用法:/oasgui
- 权限:magicalcrafting.altarsettings
配置相关设置+权限:
requirePermissionToBuild (默认禁用): 如果启用此设置,玩家将需要 magicalcrafting.buildstructure 权限才能建造祭坛。
onlyOwnerCanInteract (默认启用): 如果启用此设置,只有建造祭坛的玩家或具有 magicalcrafting.ownerbypass 权限的员工才能与之交互。
updateNotifications (默认启用): 如果启用此设置,具有 magicalcrafting.managestructure 权限的员工在加入时将收到有关插件是否有可下载更新的版本的消息。
创建/删除祭坛
要删除祭坛:/craftstructure [id] remove
要创建祭坛,请执行以下步骤:
选择点:拿起一本附魔书(任何附魔都可以)并使用它来选择两个点。左键单击设置第一个点,右键单击设置第二个点。这两个点必须在同一个世界中。您选择的结构必须完全连接,没有任何间隙。
定义结构:结构将从两个点之间的立方体中选择,排除外边缘的方块。这意味着仅包括立方体内的方块。为了获得最佳效果,建议将结构悬浮在空中。
标记核心和基座方块:
- 要标记核心方块,请用钻石左键单击它。如果需要删除标记,请再次左键单击它。
- 要标记一个基座方块,请用钻石右键单击它。要删除标记,请再次右键单击它。
- 完成结构:标记好核心和基座方块后,使用以下命令完成祭坛: /craftstructure [id]
解释配方
在通过 /crrecipe 命令添加配方后,您可以使用 /editrecipe 命令编辑其属性。
第一项:这将打开第二个库存,您可以在其中定义多达 54 种成分。为了使配方起作用,每种成分必须在数量、名称、lore、材质、NBT 标签等方面完全匹配。
第二项:这允许您设置主要成分,它将放置在核心方块上。要做到这一点,请在您的库存中单击任何项目。相同的规则适用于成分列表——该项目必须完全匹配。核心项目是可选的,您可以通过在 GUI 中单击它来删除它。
第三个槽:此定义将在核心方块上生成的结果。结果将是您定义的项目的确切副本。要设置它,请在您的库存中右键单击一个项目。此项可以留空,这意味着当配方完成后,玩家将不会收到任何东西。
第四项:这允许您设置启动配方后所花费的时间。选择此项将关闭您的库存,并允许您在聊天中输入时间。格式为 [数量]s/m/h/d(用于秒、分钟、小时或天)。输入无效格式将保留旧值。时间不能为负数或小于 1 秒。
您可以在任何时候离开 GUI 并继续设置配方;您的进度将被保存。
如果您删除一个配方,它将自动从任何祭坛 prefab 中删除,并且使用该 ID 的任何正在进行的配方将停止。
config.yml
```
reloadConfig: '&a您已重新加载配置'
noPermission: '&4您没有执行此命令的权限'
# 此选项允许插件收集匿名统计数据。
# 不会共享任何个人或敏感信息,仅一般使用数据。
useBStats: true
# 拥有 OP 权限或具有 magicalcrafting.managestructure 权限的玩家将在加入时收到有关插件更新的提示。
updateNotifications: true
# 如果启用,只有祭坛的所有者或具有 magicalcrafting.ownerbypass 权限的玩家才能与结构交互。
onlyOwnerCanInteract: true
invalidLocations: '&c&l无效位置!&7请确保两个点都在同一个世界中。'
noBlock: '&c&l未找到方块!&7在选定点之间没有有效的方块。'
sameId: '&c&l重复 ID!&7已经存在一个具有此 ID 的结构。'
structureCreated: '&a&l结构创建!&7结构 {id} 已使用 &a{blocks} 个方块 &7和 &a{pedestals} 个基座创建。'
structureRemoved: '&a&l结构已移除!&7已经删除了 ID 为 {id} 的结构。玩家将不再能够建造它。'
noCore: '&c&l缺少核心方块!&7该结构没有选择核心方块。'
pos1Selected: '&a&l位置 1 设置!&7位置:{world} 在 ({x}, {y}, {z})'
pos2Selected: '&a&l位置 2 设置!&7位置:{world} 在 ({x}, {y}, {z})'
invalidCommand: '&c&l无效命令!&7用法:/craftstructure [id] {remove} - 使用 {remove} 删除 ID,否则,它会创建一个。'
invalidId: '&c&l无效 ID!&7不存在 ID 为 {id} 的结构。'
# 当启用时,只有具有 magicalcrafting.buildstructure 权限的玩家才能建造祭坛。
requirePermissionToBuild: false
selectedCore: '&a&l已选择核心方块!&7已将单击的方块设置为核心方块。'
unselectedCore: '&c&l已取消选择核心方块!&7已从核心方块中删除了单击的方块。'
selectedPedestal: '&a&l已选择基座方块!&7已将单击的方块设置为基座方块。'
unselectedPedestal: '&c&l已取消选择基座方块!&7已从基座方块中删除了单击的方块。'
recipeDoesNotExist: '&c&l配方不存在!&7没有 ID 为 {id} 的配方。'
recipeAlreadyExists: '&c&l重复配方!&7一个 ID 为 {id} 的配方已经存在。'
createRemoveCmdUsage: '&c&l命令用法:&7/crrecipe [add/remove] [id]'
editRecipeCmdUsage: '&c&l命令用法:&7/editrecipe [id]'
recipeCreated: '&a&l配方创建!&7已创建具有 ID {id} 的新配方。使用 /editrecipe {id} 修改它。'
recipeRemoved: '&a&l配方已移除!&7ID 为 {id} 的配方已被移除。'
structureCreateRemoveCmdUsage: '&c&l命令用法:&7/scrr [add/remove] [structureId/*] [recipeId/*]'
structureDoesNotExist: '&c&l结构不存在!&7结构 {structure} 不存在。'
structureCreateRemoveCmdUse: '&a&l操作完成!&7您已 {action} 配方 {recipe} 到结构 {structure}。'
seeRecipesStructureCmdUsage: '&c&l命令用法:&7/srstructure [id]'
# 库存部分
awaitInputMainMessage: '&a&l等待输入!&7请在聊天中输入延迟,例如:5s、35m、1h、2d。'
invalidInputMainMessage: '&c&l无效输入!&7时间延迟 {invalid} 未被识别。'
recipeMainGuiTitle: '&c&l配方编辑器 - 主菜单'
recipeIngredientsGuiTitle: '&c&l配方编辑器 - 配料'
# 更新 1.1
altarSettingsInventoryName: '&c&l祭坛设置'
friendsCmdUsage: '&c&l命令用法:&7/mcarfriend [add/remove] [用户名]'
playerInvalid: '&c&l玩家未找到!&7玩家 {player} 尚未在这个服务器上玩过。'
addedFriend: '&a&l已添加朋友!&7您已将 {player} 添加到您的好友列表。'
alreadyFriend: '&e&l已经是朋友!&7{player} 已经在您的好友列表上。'
removeFriend: '&a&l已移除朋友!&7您已从您的好友列表中删除了 {player}。'
notFriend: '&c&l不是朋友!&7{player} 不在您的好友列表上。'
cannotAddFriendSelf: '&7您无法将自己添加为好友。'
# 结束更新 1.1
# 更新 1.2
# 您可以使用 ALL、AMOUNT、DURABILITY、ITEM_META、NAME、LORE、CUSTOM_MODEL_DATA、ENCHANTS、ITEM_FLAGS、ALL_CUSTOM_NBT_TAGS 这些可以使用的标签
# ALL 只检查两个物品是否具有相同的材质
# AMOUNT 跳过两个物品之间的数量检查。对于其他设置,同样如此。
# ITEM_META 跳过 item meta 下的所有内容,因此在服务器版本方面没有必要在您的情况下考虑 NAME、LORE 等。
# 新版本的 Minecraft 将 DURABILITY 保存在物品内部,因此在您的服务器版本中需要跟踪它
# ALL_CUSTOM_NBT_TAGS 仅适用于 1.13.2+
item-check-skips:
- NULL
# - ITEM_META
# 结束更新 1.2
# 材料名称以 _STAINED_GLASS_PANE 结尾将使用 STAINED_GLASS_PANE 代替旧版本
# 这仅适用于名称以 _STAINED_GLASS_PANE 结尾的材质,因为它是默认示例
items:
filler:
material: BLACK_STAINED_GLASS_PANE
materialData: 15
customModelData: 0
amount: 1
name: ' '
# 用于编辑配方 GUI
edit-ingredients:
material: FEATHER
name: '&a&l修改配料'
lore: '&7当前选择的配方:&a{id}'
hasGlow: true
select-main-ingredient:
material: ENDER_PEARL
name: '&c&l主要配料未选择'
lore:
- '&7当您选择主要配料时,它将显示在此处。'
- '&7左键单击您的库存中的一个项目来选择它。'
- '&7再次左键单击此项目以删除主要配料。'
- '&7右键单击此项目以获取您库存中的副本,如果空间足够。'
- '&7当前选择的配方:&a{id}'
select-result:
material: GLASS
name: '&c&l结果项目未选择'
lore:
- '&7当您选择结果项目时,它将显示在此处。'
- '&7右键单击您的库存中的一个项目来选择它。'
- '&7再次右键单击此项目以删除结果项目。'
- '&7右键单击此项目以获取您库存中的副本,如果空间足够。'
- '&7当前选择的配方:&a{id}'
change-wait-time:
material: COMPASS
hasGlow: true
name: '&a&l更改等待时间'
lore:
- '&7左键单击并在聊天中输入格式为 {amount}:{format} 的时间。'
- '&7可用格式:s(秒)、m(分钟)、h(小时)、d(天)。'
- '&7例子:&a37s &7= 37 秒。'
- '&7当前选择的等待时间:&a{waitTime}'
- '&7当前选择的配方:&a{id}'
# 在祭坛设置 GUI 中使用
structure-access-mode:
material: BOOK
name: '&a&l更改访问模式'
lore:
- '&7选择可以与您的祭坛交互的人员。'
- '&7如果启用某个配置选项,此选项将始终为 &cPRIVATE&7。'
- '&7可用模式:&cPRIVATE&7、&aFRIENDS_ONLY&7、&bPUBLIC&7。'
- '&7当前模式:&a{mode}'
# 漂亮的东西 - 未来功能概念部分
# 以下描述的特性目前是一个概念,尚未实现。
# 如果收到积极反馈,这些功能可能会在未来开发。
# 可能的未来事件:onStructureBuild, onStructureDestroy, onStructureStartRecipe, onStructureStopRecipe, onStructureRecipeOnGoing
# onStructureRecipeOnGoing 包括一个间隔设置,确定以下操作执行的频率。 最小间隔是一秒。
# 对于不支持粒子效果的早期版本(1.8),您需要使用 'effect' 代替:
# onStructureBuild:
# onCore:
# - 'sound [sound] [volume] [pitch]'
# - 'lightning'
# - 'particle [particle] [amount]'
# - 'sendMessage &a&l结构已成功建造!'
# onPedestals:
# forEachBlock:
# - 'particle [particle] [amount]'
# - 'lightning'
# onMiscBlocks:
#不要修改,否则可能会丢失数据
configVersion: 0.0
```
未来计划:
- 修复错误:我将解决发现的任何错误。
潜在功能:我可能会在 config.yml 中的“#Fancy stuff”部分下提到的某些想法中实现一些功能。我建议您先阅读它。如果该插件获得流行并收到积极反馈,我计划继续添加新功能。
如果您有任何反馈、建议或需要报告错误或错误,请通过 Discord 联系我:balustrada