开启辅助访问      

站内搜索

搜索
热搜: 下载 1.19 1.20

Minecraft(我的世界)苦力怕论坛

[本体插件] KnapsackToGo4:跨服同步——强大的跨服数据同步插件第4代。

发表于 2022-7-18 00:22:38 | 显示全部楼层 |阅读模式 IP:湖北省
插件发布
中文名: 跨服同步
外语名: KnapsackToGo4
支持版本: 1.6.x 
适用服务端: Spigot 
插件类型: 安全 
前置插件: 无前置
来源: 原创
原帖地址: https://jjaw.cn/2024/2/23/KnapsackToGo4/
下载地址: https://gitee.com/jja8/KnapsackToGo4/releases
最后更新: 2022-07-18
本帖最后由 jja8 于 2024-2-25 05:50 编辑



KnapsackToGo4:跨服同步 —— 强大的跨服数据同步插件第4代。

稳定   轻量   实用






KnapsackToGo2%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D.gif
KnapsackToGo2的演示

使用KnapsackToGo2可以轻松的完成多服务器之间的数据同步。KnapsackToGo4比KnapsackToGo2更稳定,更轻量,解决了死锁的问题,拥有更多同步方式和更强大的扩展性。





KnapsackToGo4如何保证数据安全

KnapsackToGo4使用的独占锁的方式,当玩家在一个服务器中的时其他服务器无法读取。






KnapsackToGo4通过扩展可以支持MOD数据同步

NMSserialize主要是针对MOD服务器开发的,目前只提供1.12.2和1.16.5两个MOD较多的版本。如果的服务端是纯净服务端不推荐使用NMSserialize。
NMSserialize12
1.12.2版本的NMS序列化,直接调用核心序列化玩家数据,可以完美存储几乎所有的数据包括MOD的数据。缺点是必须同步全部数据。
NMSserialize16

1.16.5版本的NMS序列化,直接调用核心序列化玩家数据,可以完美存储几乎所有的数据包括MOD的数据。缺点是必须同步全部数据。





KnapsackToGo4如何安装扩展?

您可以在这里找到作者编写的KnapsackToGo4扩展,具体的安装方法和使用方法请参考扩展对应的文档。
https://gitee.com/jja8/KnapsackToGo4Plugin/blob/master/README.md




为什么写这款插件

KnapsackToGo2插件已经有很多服务器在使用了,并且功能也挺完善。 但是仍然存在一些问题,例如:服务器崩溃后玩家再次进入服务器就需要等待许久。 我自己对KnapsackToGo2也是不满意的, 在开发完KnapsackToGo2之后我又继续开发了许多插件,也学习到了很多编程经验,我感觉我的编程技术有了很大的进步。 在总结了前几代插件的毛病和逻辑上的问题后,我想到了一种新的方案。于是我决定重新编写了一个更好的KnapsackToGo4。 这次全新的KnapsackToGo4是在总结了前面所有失败的经验后完全重新编写的,运行逻辑也是最合理符合直觉的。

ps: 为什么新一代叫KnapsackToGo4而不是KnapsackToGo3呢? 因为KnapsackToGo3在很久之前就写完了,但是因为问题太多所以就弃坑了。






遇到问题.png
遇到问题

你可以通过参考常见问题解答来快速解决常见问题。点击这里
也可以加入我们的插件俱乐部讨论你遇到的问题。群号:820131534
如果遇到bug可以向作者
反馈,在几天后会得到修复。





%E4%BA%A4%E6%B5%81%E7%BE%A4.png
一个好得插件,怎么能没有交流群?

加入我们得交流群,可以在第一时间获取到插件动态。也可以交流在使用插件时遇到得问题。赶紧加入吧!点击这里。群号:820131534





下面是硬核教程文档


支持

自带的数据存储和同步方式

  • 文件
  • mysql
  • sqlite

自带的序列化方式

  • Yaml

作者编写的扩展列表

https://gitee.com/jja8/KnapsackToGo4Plugin/blob/master/README.md


推荐扩展NMSserialize,NMSserialize主要是针对MOD服务器开发的,目前只提供1.12.2和1.16.5两个MOD较多的版本。如果的服务端是纯净服务端不推荐使用NMSserialize。
NMSserialize12
1.12.2版本的NMS序列化,直接调用核心序列化玩家数据,可以完美存储几乎所有的数据包括MOD的数据。缺点是必须同步全部数据。
NMSserialize16
1.16.5版本的NMS序列化,直接调用核心序列化玩家数据,可以完美存储几乎所有的数据包括MOD的数据。缺点是必须同步全部数据。


使用方法

名词定义

数据容器

存储数据的方式。用来存数据。比如记录文字可以用纸和笔,也可以用电脑或手机,还可以刻在石头上。

数据序列化

加载和保存数据的方式。比如你可以用汉语表达信息,也可以用英语表达信息。

注意

请认真读完注意事项,避免发生数据丢失。

PlayerDataCase.yml和PlayerDataSerialize.yml请在开服之前配置好后就不要再修改,否则会丢失数据。

PlayerDataCase.yml是数据容器,也就是存储数据的方式。一旦设置好后就不要修改了。

PlayerDataSerialize.yml是数据序列化,是表示数据的方式。一旦设置好后就不要修改了。

如果使用了数据容器类扩展PlayerDataCase.yml将无效。插件在识别到扩展的情况下不会生成PlayerDataCase.yml文件,说明安装成功。例如安装了MongoDB数据库的扩展,请删除PlayerDataCase.yml配置文件。

如果使用了数据序列化类扩展PlayerDataSerialize.yml文件将无效。插件在识别到扩展的情况下不会生成PlayerDataSerialize.yml文件,说明安装成功。例如安装了NBT序列化的扩展,请删除PlayerDataSerialize.yml配置文件。

如果需要你的服务器已经有许多的玩家数据了,请不要安装或者删除如何扩展。因为很有可能造成数据丢失。

请尽量在插件第一次加载时就将所以扩展安装好,插件在识别到数据容器类扩展的情况下不会生成PlayerDataCase.yml文件,在识别到数据序列化扩展的情况下不会生成PlayerDataSerialize.yml文件。

如果在开发环境,需要修改PlayerDataSerialize.yml或者安装或删除序列化类扩展,请先清除数据容器中的全部数据。使用的文件就删除文件,使用的数据库就删除表。

关于配置文件

核心配置文件

lang.yml、playerDataConfig.yml和ServerConfig.yml是插件核心逻辑的配置文件。这三个配置保持默认就行,一般不需要修改。

  • lang.yml 语言文件
  • playerDataConfig.yml 玩家数据管理配置
  • ServerConfig.yml 服务器配置

playerDataConfig.yml

  1. 玩家数据加载前保持背包为空: false  #在数据同步加载之前清空玩家背包,不建议开启。
  2. 玩家数据解锁检测间隙: 5  #如果玩家数据被其他服务器上锁,那么多久去看一下是否被解锁。这个操作是在异步的,不会卡服务器。
  3. 自动保存时间: 600 #自动保存玩家数据,防止服务器突然崩溃数据没保存。
复制代码

ServerConfig.yml

  1. serverName: null  #没什么用,就是好看
复制代码

其他配置文件

  • PlayerDataCase.yml 选择序列数据容器的配置文件
  • PlayerDataSerialize.yml  选择数据序列化方法的配置文件

为什么不是核心配置文件?

PlayerDataCase.yml是告诉插件要注册什么数据容器,其实容器类扩展的功能就是注册自己的数据容器,所以在有扩展的时候不会生成PlayerDataCase.yml配置文件。

PlayerDataSerialize.yml是告诉插件要注册什么序列化方法,其实序列化扩展就是注册自己的序列化方法,所以在有扩展的时候就不会生成PlayerDataSerialize.yml配置文件。

目前插件有三种数据容器,一种序列化方法。

容器列表

  • File 用文件的方法存储数据
  • Sqlite 一款轻型的数据库,储存在单一文件中的一个完整的数据库,无需安装和管理配置。
  • Mysql 一款轻量级数据库,通过网络连接。

序列化方法列表

  • Yaml

PlayerDataCase.yml

  1. playerDataCaseType: Mysql  #填上方的其中一种就行了
复制代码

PlayerDataSerialize.yml

  1. playerDataSerializeType: Yaml  #填上方的其中一种就行了
复制代码

为什么需要这两个文件?

因为插件里自带了多种数据容器和序列化方法,所以需要这两个文件来告诉插件你要用哪一个。

为什么安装相应的扩展就不需对应的文件了?

因为安装扩展就相当于已经选择扩展作为数据容器或序列化方法了,所以自然不需要了。

插件自带的数据容器的配置文件

File

FileDataCaseSetUp.yml

  1. file: <文件位置>  #这里填写数据保存到的文件夹路径
复制代码

Sqlite

MysqlDataCaseSetUp.yml

  1. userName: root #用户名
  2. PassWord: 778899& #密码
  3. dataBaseURL: jdbc:mysql://127.0.0.1/KnapsackToGo4 #数据库URL
  4. holdLockTime: 30000 #持有锁时间,数值越小数据库更新越频繁,但是服务器崩溃后自解锁越快。如果服务器基本不崩溃可以适当地设置长一点。但是设置太长了服务器如果突然崩溃就要等很久。
复制代码

Mysql

SqliteDataCaseSetUp.yml

  1. userName: root #用户名
  2. PassWord: 778899& #密码
  3. dataBaseURL: jdbc:sqlite:C://knapsackToGo4/playerData.db #数据库URL
  4. holdLockTime: 30000 #持有锁时间,数值越小数据库更新越频繁,但是服务器崩溃后自解锁越快。如果服务器基本不崩溃可以适当地设置长一点。但是设置太长了服务器如果突然崩溃就要等很久。
复制代码

插件自带的序列化方法的配置文件

Yaml

YamlDataSerializeSetUp.yml

  1. AdvancementProgress: false #进度
  2. EnderChest: true #末影箱
  3. Experience: true #经验
  4. FoodLevel: true #饱食度
  5. Health: true #血量
  6. Inventory: true #物品栏
  7. PotionEffects: true #药水效果
复制代码

扩展的配置文件

扩展也会生成相应的配置文件,也许在KnapsackToGo4的文件夹中,也可能在扩展插件对应的文件夹中。去参考扩展的文档配置。
苦力怕论坛,感谢有您~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供云服务 | GMT+8, 2024-5-9 14:01

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号