mzmzmz
本帖最后由 mzmzmz 于 2023-2-5 14:06 编辑


MzLib
一个前置插件,自带许多基础功能

兼容性
        JVM
                已兼容Java8及以上的所有JRE
        MC服务端
                支持所有Spigot1.12+服务端及其下游(Paper等)
                不支持mod服(包括CatServer、Mohist等)
        环境
                支持Windows、Linux、Docker容器
                MzLibAgent
                        在Docker容器等地方运行MzLib可能会报错并提示你安装MzLibAgent
                        MzLibAgent不是一个Bukkit插件,请按照以下步骤安装:
                        下载MzLibAgent.jar并移动到你的服务端文件夹内(与核心在同一目录)
                        在服务端的启动参数内添加JVM参数-javaagent:MzLibAgent.jar(需添加在参数-jar之前)
                        安装完成之后重启服务端即可
                         MzLibAgent.jar (193.52 KB, 下载次数: 141)

命令
        主命令/mzlib或/mz
        输入错误的命令参数以查看它的帮助,如/mz help

多语言支持
MzLib将自动获取每个玩家客户端所设置的语言并用于显示
语言文件的格式可以为properties(后缀.lang)或json(后缀.json)

MC官方翻译文本
        客户端中绝大部分的可见文字,包括物品、实体、药水效果、方块、标题、附魔的名称等
        en_us(美国英语)自动从服务端核心中获取,其他语言自动从BMCL下载

MzLib插件文本
        MzLib中报错信息以外的文本,包括提示信息、显示格式等
        插件启动后自动生成plugins/MzLib/lang文件夹,自带zh_cn(简体中文)语言,其他语言请自行翻译

MzLib附属插件的文本
        一般存放于plugins/<插件名>/lang文件夹

地图画支持
提供了地图画有关的API
从图片文件加载地图画
  1. /mzlib loadMap <x轴地图数量> <y轴地图数量> <文件路径>
复制代码
       成功加载后会得到每张地图画物品,可按顺序贴在展示框上
        单张地图示例:
        
        6x5地图示例:
        
        注意事项
                加载后的像素保存在地图物品的nbt中,不依赖于原图片文件
                每张地图的分辨率为128x128,加载图片会自动拉伸
                若文件为jpeg格式且分辨率较低,自动拉伸会较模糊,请使用外部工具(ps等)拉伸放大后再加载进MC

附魔支持
使用中文附魔指令(或客户端设置的其他语言)
  1. /mzlib enchant <附魔名称> [等级]
复制代码
       附魔名称随客户端设置的语言变化
        

附魔显示代理
        代理物品上附魔及其等级的显示而不是原版的乱码
        低等级附魔显示为罗马数字,高等级和负等级显示为阿拉伯数字(可在配置文件中设置阈值)
        

掉落物名称显示
字面意思,该功能可以在配置文件中关闭
原理为网络数据包修改,不会影响实体本身的数据
显示的名称跟随客户端设置的语言
显示的格式位于MzLib对应的语言文件


手持物品展示
聊天消息的%i会替换成手中物品信息,该功能可以在配置文件中关闭
原理为网络数据包修改
部分聊天命令的参数也可以被替换(在配置文件中设置)
如服务器版本为1.19+,聊天消息会被签名无法修改,可以使用插件去除聊天消息中的消息签名



更新记录


插件交流QQ群:750455476



本插件所用代码部分来自其他开源或闭源(已授权)作品
本插件为非盈利性插件,免费发布,严禁销售和转卖
部分插件源码来自UnsafeAccessor开源项目(开源地址:https://github.com/Karlatemp/UnsafeAccessor
部分插件源码来自ByteBuddyAgent开源项目(开源地址:https://github.com/raphw/byte-buddy
部分插件源码来自ow2.asm开源项目(开源地址:https://gitlab.ow2.org/asm/asm


奥力給
希望可以支持低版本服务器!(1.8+)

寂华
前排催更mzqq

beiqianhuajiddd
7有时,逛着逛着就逛到了想要的插件

pepsi小唐
请问占用高吗

_Miu
支持mz原创插件,支持,继续努力

数据剪切-陨星刃
顶一下,支持原创作者

熄灭星空
很直观的可以展示给玩家是个好插件支持

mine丶young
终于出凋落物显示新版啦!旧版很多错误

mine丶young
[12:57:13 ERROR]: Error occurred while enabling MzLib v10.0.1-pre4 (Is it up to date?)
java.lang.ExceptionInInitializerError: null
        at mz.lib.minecraft.bukkit.MzLib.onEnable(MzLib.java:203) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:338) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:420) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at com.rylinaux.plugman.util.PluginUtil.load(PluginUtil.java:304) ~[?:?]
        at com.rylinaux.plugman.command.LoadCommand.execute(LoadCommand.java:114) ~[?:?]
        at com.rylinaux.plugman.PlugManCommandHandler.onCommand(PlugManCommandHandler.java:95) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at org.bukkit.craftbukkit.v1_14_R1.CraftServer.dispatchCommand(CraftServer.java:739) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at org.bukkit.craftbukkit.v1_14_R1.CraftServer.dispatchServerCommand(CraftServer.java:701) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at net.minecraft.server.v1_14_R1.DedicatedServer.handleCommandQueue(DedicatedServer.java:456) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at net.minecraft.server.v1_14_R1.DedicatedServer.b(DedicatedServer.java:418) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at net.minecraft.server.v1_14_R1.MinecraftServer.a(MinecraftServer.java:1098) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:925) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_291]
Caused by: java.lang.NoSuchFieldException: aq
        at java.lang.Class.getDeclaredField(Unknown Source) ~[?:1.8.0_291]
        at mz.lib.minecraft.bukkit.event.SendEntityMetadataEvent.<clinit>(SendEntityMetadataEvent.java:55) ~[?:?]
        ... 16 more

mzmzmz
本帖最后由 mzmzmz 于 2021-8-25 13:19 编辑
mine丶young 发表于 2021-8-25 12:57
[12:57:13 ERROR]: Error occurred while enabling MzLib v10.0.1-pre4 (Is it up to date?)
java.lang.Exc ...

请给出核心类型(如Spigot)(最好再给个核心下载链接吧我懒得找)

↑ 好吧我看到了报错里面有 akarin-1.14.4.jar


预计下个版本修复

mzmzmz
mine丶young 发表于 2021-8-25 12:57
[12:57:13 ERROR]: Error occurred while enabling MzLib v10.0.1-pre4 (Is it up to date?)
java.lang.Exc ...

已修复,请及时更新
感谢反馈

hfkasf
66666666666666666666666666666666666

ssuiyyh
可以可以非常支持,顶

Ice_Frog
原创作者 支持

mine丶young
[10:41:55 ERROR]: [MzLib] Unhandled exception number 64 occured in onPacketSending(PacketEvent) for MzLib
java.lang.IllegalStateException: SendEntityMetadataEvent may only be triggered synchronously.
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:533) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at mz.lib.minecraft.bukkit.event.SendEntityMetadataEvent$1.onPacketSending(SendEntityMetadataEvent.java:108) ~[?:?]
        at com.comphenix.protocol.injector.SortedPacketListenerList.invokeSendingListener(SortedPacketListenerList.java:195) ~[?:?]
        at com.comphenix.protocol.injector.SortedPacketListenerList.invokePacketSending(SortedPacketListenerList.java:149) ~[?:?]
        at com.comphenix.protocol.injector.PacketFilterManager.handlePacket(PacketFilterManager.java:535) ~[?:?]
        at com.comphenix.protocol.injector.PacketFilterManager.invokePacketSending(PacketFilterManager.java:516) ~[?:?]
        at com.comphenix.protocol.injector.netty.ProtocolInjector.packetQueued(ProtocolInjector.java:346) ~[?:?]
        at com.comphenix.protocol.injector.netty.ProtocolInjector.onPacketSending(ProtocolInjector.java:308) ~[?:?]
        at com.comphenix.protocol.injector.netty.ChannelInjector.processSending(ChannelInjector.java:433) ~[?:?]
        at com.comphenix.protocol.injector.netty.ChannelInjector.access$800(ChannelInjector.java:70) ~[?:?]
        at com.comphenix.protocol.injector.netty.ChannelInjector$3.handleScheduled(ChannelInjector.java:373) ~[?:?]
        at com.comphenix.protocol.injector.netty.ChannelInjector$3.onMessageScheduled(ChannelInjector.java:343) ~[?:?]
        at com.comphenix.protocol.injector.netty.ChannelProxy$2.schedulingRunnable(ChannelProxy.java:127) ~[?:?]
        at com.comphenix.protocol.injector.netty.EventLoopProxy.execute(EventLoopProxy.java:95) ~[?:?]
        at net.minecraft.server.v1_14_R1.NetworkManager.b(NetworkManager.java:200) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at net.minecraft.server.v1_14_R1.NetworkManager.dispatchPacket(NetworkManager.java:176) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at net.minecraft.server.v1_14_R1.NetworkManager.o(NetworkManager.java:241) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at net.minecraft.server.v1_14_R1.NetworkManager.sendPacketQueue(NetworkManager.java:227) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at net.minecraft.server.v1_14_R1.NetworkManager.sendPacket(NetworkManager.java:167) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1521) ~[?:git-Akarin-"b8806d2"]
        at net.minecraft.server.v1_14_R1.PlayerConnection.sendPacket(PlayerConnection.java:1494) ~[?:git-Akarin-"b8806d2"]
        at org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer.updatePlayerListHeaderFooter(CraftPlayer.java:405) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer.setPlayerListHeader(CraftPlayer.java:383) ~[akarin-1.14.4.jar:git-Akarin-"b8806d2"]
        at io.puharesource.mc.titlemanager.internal.services.features.PlayerListServiceSpigot.setHeader(PlayerListServiceSpigot.kt:78) ~[?:?]
        at io.puharesource.mc.titlemanager.internal.services.features.PlayerListServiceSpigot$createHeaderSendableAnimation$4.invoke(PlayerListServiceSpigot.kt:52) ~[?:?]
        at io.puharesource.mc.titlemanager.internal.services.features.PlayerListServiceSpigot$createHeaderSendableAnimation$4.invoke(PlayerListServiceSpigot.kt:22) ~[?:?]
        at io.puharesource.mc.titlemanager.internal.model.animation.PartBasedSendableAnimation.update(PartBasedSendableAnimation.kt:83) ~[?:?]
        at io.puharesource.mc.titlemanager.internal.model.animation.PartBasedSendableAnimation$update$2.invoke(PartBasedSendableAnimation.kt:90) ~[?:?]
        at io.puharesource.mc.titlemanager.internal.model.animation.PartBasedSendableAnimation$update$2.invoke(PartBasedSendableAnimation.kt:10) ~[?:?]
        at io.puharesource.mc.titlemanager.internal.services.task.SchedulerServiceAsync$scheduleRaw$1.run(SchedulerServiceAsync.kt:39) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_291]
        at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_291]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source) ~[?:1.8.0_291]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) ~[?:1.8.0_291]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_291]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_291]

伍十柒°
支持原创插件

浮生几许亿
顶,很好用的插件,支持

ggbssb
感谢分享

奥力給
希望是一个高兼容性插件
特地前来支持
希望有生之年可以解决1.8问题
(希望可以发包,防止卡bug)

wrnxrbz
很实用的插件,支持一下

mzmzmz
奥力給 发表于 2021-9-8 11:24
希望是一个高兼容性插件
特地前来支持
希望有生之年可以解决1.8问题

建议描述详细些
比如“希望可以发包”

Elfin1988
1.17也终于有掉落物显示了

转子拖拉机
很实用的插件

桃源村服主
本帖最后由 桃源村服主 于 2021-10-9 23:15 编辑

报错问题已经修复了,好评

make_king
看上去很不错!

三誓
感谢作者分享,这个要好用多了

mzmzmz
mine丶young 发表于 2021-8-28 10:44
[10:41:55 ERROR]: [MzLib] Unhandled exception number 64 occured in onPacketSending(PacketEvent) for  ...

该问题已修复
很抱歉拖了那么久
因为当时重写代码时遇到一些问题
然后学校还把第一个周末吞了

HelloMCS
服务器paper1.17.1-296
插件版本MzLib v10.0.1-pre6.jar然后回退到MzLib v10.0.1-pre5.jar版本就正常了
希望作者解决pre6的这个bug

  1. [23:55:54 ERROR]: Could not load 'plugins/MzLib v10.0.1-pre6.jar' in folder 'plugins'
  2. org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
  3.         at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPluginLoader.java:186) ~[patched_1.17.1.jar:git-Paper-296]
  4.         at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:160) ~[patched_1.17.1.jar:git-Paper-296]
  5.         at org.bukkit.craftbukkit.v1_17_R1.CraftServer.loadPlugins(CraftServer.java:410) ~[patched_1.17.1.jar:git-Paper-296]
  6.         at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:286) ~[patched_1.17.1.jar:git-Paper-296]
  7.         at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1212) ~[patched_1.17.1.jar:git-Paper-296]
  8.         at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[patched_1.17.1.jar:git-Paper-296]
  9.         at java.lang.Thread.run(Thread.java:831) ~[?:?]
  10. Caused by: java.util.zip.ZipException: zip END header not found
  11.         at java.util.zip.ZipFile$Source.zerror(ZipFile.java:1608) ~[?:?]
  12.         at java.util.zip.ZipFile$Source.findEND(ZipFile.java:1460) ~[?:?]
  13.         at java.util.zip.ZipFile$Source.initCEN(ZipFile.java:1469) ~[?:?]
  14.         at java.util.zip.ZipFile$Source.<init>(ZipFile.java:1281) ~[?:?]
  15.         at java.util.zip.ZipFile$Source.get(ZipFile.java:1243) ~[?:?]
  16.         at java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:707) ~[?:?]
  17.         at java.util.zip.ZipFile.<init>(ZipFile.java:241) ~[?:?]
  18.         at java.util.zip.ZipFile.<init>(ZipFile.java:171) ~[?:?]
  19.         at java.util.jar.JarFile.<init>(JarFile.java:348) ~[?:?]
  20.         at java.util.jar.JarFile.<init>(JarFile.java:319) ~[?:?]
  21.         at java.util.jar.JarFile.<init>(JarFile.java:285) ~[?:?]
  22.         at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPluginLoader.java:174) ~[patched_1.17.1.jar:git-Paper-296]
  23.         ... 6 more
复制代码


mzmzmz
本帖最后由 mzmzmz 于 2021-10-3 00:49 编辑
HelloMCS 发表于 2021-10-3 00:03
服务器paper1.17.1-296
插件版本MzLib v10.0.1-pre6.jar然后回退到MzLib v10.0.1-pre5.jar版本就正常了
希 ...

经测试未发现此问题
请重新下载插件并测试
感谢反馈
(报错内容为缺少压缩文件末尾导致无法加载plugin.yml,请确认插件文件是否完整)

书生丫啊啊啊
本帖最后由 书生丫啊啊啊 于 2021-10-16 20:45 编辑

插件很好,挺好的,很实用

HelloMCS
本帖最后由 HelloMCS 于 2021-10-4 12:12 编辑

服务器paper1.17.1-296
插件版本MzLib v10.0.1-pre5.jar,其他附魔插件版本DeEnchantment-1.0.5

作者你好,看到您基本上每条评论都回复,我在测试过程中发现了个与其他插件不太兼容的bug,给您反馈下。您可以酌情去考虑是否兼容。
MzLib支持附魔显示,当我使用其他附魔插件的时候造成冲突,目前支持1.17.1扩展附魔的常见的有两个插件,一个是[机制|开源] 负魔书 ——让原版的附魔多点意外,另一个是[机制]ExcellentEnchants —— 兼容高版本的更多附魔。我在测试第一个插件负魔书的时候,由于这个插件自带自己的附魔显示,导致您这个插件去处理显示的时候出现了重复。
问题一:物品会显示双份附魔,盲猜是负魔书插件自身显示一个,然后您的插件显示了一个导致显示了双份。
问题二:您的插件MzLib在处理显示的时候好像是用到了生成的MCAssets文件夹中的zh_cn.json文件去获取附魔名字,但是有个小问题就是附魔显示的这个配置"enchantment.unknown": "\u672a\u77e5\u7684\u9b54\u5492\uff1a%s",好像并没有生效,按理来说,如果是未知附魔,您的插件应该显示中文"未知的魔咒:",但是实际的测试负魔书插件扩展的附魔并没有显示,而是显示了自定义的附魔id,如enchantment.minecraft.de_xxxxx III。
最终冲突到导致的显示效果如下图:


会显示一遍id一遍中文,重复。
期望的显示效果:
仅显示扩展插件自己的中文附魔,或者是MzLib插件能够继承显示,最终显示效果由MzLib去控制,避免显示重复或有英文id显示。

建议:
由于您的插件当前支持掉落物中文显示和高等级附魔中文显示,建议配置文件中增加以下可控配置去提高插件兼容性。
1、掉落物中文显示和附魔中文显示分别增加开关。(效果:我用到附魔中文显示就打开附魔中文显示,用到掉落物显示就打开掉落物显示,两个为非绑定的关系,控制独立起来,避免因其中一个功能与其他插件或mod冲突导致另一个功能也用不了)
2、掉落物显示和附魔显示自定义扩展,并在readme或帖子说明中指出如何修改和配置。(效果:当我有一个自己定义的物品,如id是minecraft:iron_sword我可以通过这个唯一id去配置对应的凋落物中文名显示,同理,附魔当我有一个自定义英文id如enchantment.minecraft.de_xxxxx,那么我可以自定义对应的附魔中文名显示,提高扩展和兼容性)
看您插件生成的配置文件,以上2个实现起来应该不太难,唯一稍微麻烦点的可能是如何处理重复显示问题和去掉重复显示问题附魔的实际效果buff是否还生效,这个就需要您去看自己的代码逻辑如何处理了。

后话:难得见作者如此认真对待评论区反馈,说的有点多,勿怪。如果您有打算做对其他插件兼容,我也非常乐意抽出时间协助您测试 [机制]ExcellentEnchants —— 兼容高版本的更多附魔 等其他的相关插件兼容性和问题。


mzmzmz
HelloMCS 发表于 2021-10-4 12:09
服务器paper1.17.1-296
插件版本MzLib v10.0.1-pre5.jar,其他附魔插件版本DeEnchantment-1.0.5

已解决该兼容性问题(MzLib v10.0.1-pre7)
感谢反馈

mzmzmz
奥力給 发表于 2021-9-8 11:24
希望是一个高兼容性插件
特地前来支持
希望有生之年可以解决1.8问题

很抱歉
由于一些 技术性问题
兼容1.8已被移出开发计划
见谅

普罗雪糕
支持作者,希望可以越做越好

Mr_Gemini
优化游戏体验 点个赞,(作者尽然每条都回复了

3368304612
好插件 支持

桃源村服主
本帖最后由 桃源村服主 于 2021-10-9 23:18 编辑

我把配置的罗马数字等级上限改成100了,但是超过10级仍然是数字,这是啥情况啊我是1.16.5的spigot端






zxc1417989405
神乎其技!6的飞起!

泪痕酱吖
看起来可以啊下载下来看看

乐碧
看着挺好用的

mzmzmz
本帖最后由 mzmzmz 于 2021-10-10 14:50 编辑
桃源村服主 发表于 2021-10-9 23:17
我把配置的罗马数字等级上限改成100了,但是超过10级仍然是数字,这是啥情况啊我是1.16.5的spigot端

该兼容性问题已修复(MzLib v10.0.1-pre10)
感谢支持(建议使用Paper端)

听枫
很棒很棒

sermantey
感谢分享

乐碧
就是可以直接鼠标移动过去看到 掉落物的属性 ???

切勿切勿
不知道具体自定义配方的机制如何,一会儿再看看

切勿切勿
不知道自定义配方具体机制是怎么样的,箱子GUI操作还是配置里写,配方支持自定义LORE的物品吗?

13432599472
感谢作者的分享 期待作者的下一个作品

mzmzmz
切勿切勿 发表于 2021-10-19 13:26
不知道自定义配方具体机制是怎么样的,箱子GUI操作还是配置里写,配方支持自定义LORE的物品吗? ...

配方的成品可以是任意物品和数量
配方的原料限制请查看贴内教程

愿往事如风~
很实用的插件,支持一下

第一页 上一页 下一页 最后一页