Minecraft(我的世界)中文论坛

标题: [综合]PlayerSQL v2.10 —— 最好的跨服玩家同步插件[1.7.5-1.12]

作者: caoli5288    时间: 2014-5-4 23:24
标题: [综合]PlayerSQL v2.10 —— 最好的跨服玩家同步插件[1.7.5-1.12]
本帖最后由 caoli5288 于 2020-4-24 02:32 编辑

PlayerSQL
玩家同步



=== 特性 ===

这个玩意同步玩家的
* 生命值
* 饥饿度
* 经验值
* 装备栏
* 物品栏
* 末影箱
* 药水效果
在不同服务器之间!如果你使用指令或者插件桥兼容的插件进行玩家传送请编辑"config.yml"将"sync.delay"的值设置小。

这玩意可以保存所有的NBT数据,包括MOD的。
一定要禁用登陆插件的保护物品功能!
新版本只支持Java8!
新的2.0-RC版本已经发布!


=== 增强模式 ===

在bungeecord上同时安装就可以启用增强模式,能提高跨服速度。

=== 说明 ===

现在流传出来的保存玩家数据的插件,都不如意。
要么卡服卡得要死,要么保存的东西不齐全,要么各种丢物品数据等等。
这个插件目前已经在一个百人蹦极服上测试了好久,超越能找到的所有。

本插件以GPLv2发布,你可以免费使用,也可以修改源代码再发布。
如果你修改了插件的源代码或者进行再发布、转载,请牢记以下几点。
* 不得抹去作者信息
* 需注明本帖地址
* 公开修改过的代码

本插件源码地址 Github。2.0代码目前位于dev分支。

=== 历史 ===
* 2020/4/24 编辑mcbbs帖子,现在最新是2.10版本。

* 2017/7/21 发布2.5.2版本,修复mod服和1.12版本兼容
* 2016/12/5 发布2.4.1版本,修复1.11版本兼容
* 2016/08/01 发布2.3-b5版本。测试版
* 2016/06/26 发布2.3-b2版本。测试版
* 2016/05/24 发布2.2.1版本。推荐升级。
* 2016/04/21 发布2.1.2.2版本。推荐升级。
* 2016/01/16 发布2.0-rc3版本。
* 2016/01/04 发布2.0-rc1版本。
* 2015/07/28 发布1.15版本。
* 2015/07/19 在mcbbs发布改进的1.14版本。
* 2015/03/13 在mcbbs发布支持1.8.3的版本。
* 2014/11/22 修复各种小问题。
* 2014/10/3 之前版本更新一直没写记录。
* 2014/7/1 新版本
* 2014/6/18 改进了保存经验值的机制
* 2014年6月9日 更新了数据锁
* 2014年6月9日 保存经济
* 2014年6月4日 保存生命上限
* 2014年5月17日 修复如果保存的装备栏为空,将不会保存的问题。
* 2014年5月9日 增加的英语支持 SQL代码部分改动。
* 2014年5月6日 不再保存空气方块了
* 2014年5月6日 解决一处可能的溢出问题
* 2014年5月5日 发布到MCBBS









作者: a8105    时间: 2014-5-5 00:34
我感觉你好热衷于数据库的插件..刺激俺们不会用么{:10_522:}
作者: qiu1995    时间: 2014-5-5 01:04
可以利用这个来跨服同步数据吗?
作者: wszjljx    时间: 2014-5-5 03:16
嘿嘿 起码注释里加个有部分代码来自~~~ 你懂得~~~
作者: yuxuanchiadm    时间: 2014-5-5 03:29
如果能够保存MOD自定义的NBT信息就好了,话说MCPC+没法把MOD自定义的NBT数据序列化一直是个硬伤。
另外数据库建议用PreparedStatement,不然可能会存在注入问题,望改进\ w /。
作者: 810109538    时间: 2014-5-5 03:31
很好用的样子A.A
作者: 810109538    时间: 2014-5-5 03:31
qiu1995 发表于 2014-5-5 01:04
可以利用这个来跨服同步数据吗?

我猜应该可以 不过大概要改编一下
作者: yuxuanchiadm    时间: 2014-5-5 03:34
另外从SQL里读出玩家数据后直接split(";")真的大丈夫么,比如书之类的东西如果里面含有;这字符就玩脱了吧/w\
作者: yuxuanchiadm    时间: 2014-5-5 03:37
建议采取在每个物品头部记录一个物品序列化字符串的长度,然后通过读取的时候通过此长度来正确识别一个物品。
作者: connection_lost    时间: 2014-5-5 03:48
yuxuanchiadm 发表于 2014-5-5 03:34
另外从SQL里读出玩家数据后直接split(";")真的大丈夫么,比如书之类的东西如果里面含有;这字符就玩脱了吧/w ...

这个正解,我的showoff插件就有这个问题
作者: yuxuanchiadm    时间: 2014-5-5 04:07
好吧又妄下结论了→ →,直觉性以为是用的Bukkit的序列化函数→ →,首先是否能序列化带非Bukkit的自定义NBT信息有待考证。其次ProtocolLib使用Base-64,不包含;字符,不存在玩脱的情况。
作者: yuxuanchiadm    时间: 2014-5-5 05:18
至于SQL注♂入,应该是有这问题,比如单个单引号啥的名字就玩脱了,LZ尽早修了吧,不然到时候最简单的注入就是使用别人玩家的账号数据以及刷物品了→ →,至于具体怎么注入就不发出来了。
作者: wolski    时间: 2014-5-5 07:22
哎呀,ProtocolLib。MCPC服要跪。。。不考虑顺便支持一下多世界多背包么?
作者: 灵魂爱人    时间: 2014-5-5 07:25
{:10_523:}好东西~
作者: caoli5288    时间: 2014-5-5 07:28
yuxuanchiadm 发表于 2 小时前
至于SQL注♂入,应该是有这问题,比如单个单引号啥的名字就玩脱了,LZ尽早修了吧,不然到时候最简单的注入就是使用别人玩家的账号数据以及刷物品了→ →,至于具体怎么注入就不发出来了。

注入问题好解决,晚上解决看看,,,一般的登陆插件允许名字里面带符号吗?
作者: caoli5288    时间: 2014-5-5 07:29
qiu1995 发表于 6 小时前
可以利用这个来跨服同步数据吗?

我想它应该没有其他用途了吧
作者: Greensky    时间: 2014-5-5 07:39
qiu1995 发表于 2014-5-5 01:04
可以利用这个来跨服同步数据吗?

我也想到了可以实现这个= =
作者: RAY5DHao    时间: 2014-5-5 07:44
宠物也弄一下吧
跨服同步狗狗
作者: yuxuanchiadm    时间: 2014-5-5 07:45
caoli5288 发表于 2014-5-5 07:28
注入问题好解决,晚上解决看看,,,一般的登陆插件允许名字里面带符号吗? ...

问题不在登陆插件,即使登陆插件检测到用户名含有空格或特殊字符,并吧玩家T掉也还是能够注入,因为登陆事件还是会调度。应该从根源解决问题,进行SQL注入检测或使用预编译SQL。
作者: caoli5288    时间: 2014-5-5 08:42
yuxuanchiadm 发表于 半小时前

问题不在登陆插件,即使登陆插件检测到用户名含有空格或特殊字符,并吧玩家T掉也还是能够注入,因为登陆事件还是会调度。应该从根源解决问题,进行SQL注入检测或使用预编译SQL。

好的,我疏忽了(⊙_⊙)
作者: caoli5288    时间: 2014-5-5 23:58
yuxuanchiadm 发表于 2014-5-5 07:45
问题不在登陆插件,即使登陆插件检测到用户名含有空格或特殊字符,并吧玩家T掉也还是能够注入,因为登陆 ...

https://www.dropbox.com/s/ql50in ... 8%8653%E7%A7%92.png
已验证服务度自己会踢掉名字带引号的玩家,这一过程发生在PlayerLoginEvent,所以对我的插件没影响。
PreparedStatament在不复用的情况下效率不高,我就不改代码了。
作者: yuxuanchiadm    时间: 2014-5-6 02:09
caoli5288 发表于 2014-5-5 23:58
https://www.dropbox.com/s/ql50inw9g5hcccs/%E6%88%AA%E5%9B%BE%20-%202014%E5%B9%B405%E6%9C%8805%E6%9 ...

总之要注入是有办法的,别太信任隐式的安全措施,把自己的代码写好才是最终手段:

package test;

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Test extends JavaPlugin implements Listener
{
    @Override
    public void onEnable()
    {
        getServer().getPluginManager().registerEvents(this, this);
    }
    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent event)
    {
        System.out.println(event.getPlayer().getName().toLowerCase());
    }
}
作者: StevenNight    时间: 2014-5-6 06:55
貌似这样可以很好的调用到网页中去哪?
作者: caoli5288    时间: 2014-5-6 16:02
* 2014年5月6日 不再保存空气方块了
作者: haobaby    时间: 2014-5-7 21:59
感谢LZ分享 略吊
作者: LaoChen    时间: 2014-5-9 10:26
看了你的源码,但是我想问的是你的附魔真的可以同步?
还有附魔书也能同步?
作者: caoli5288    时间: 2014-5-9 11:47
LaoChen 发表于 2014-5-9 10:26
看了你的源码,但是我想问的是你的附魔真的可以同步?
还有附魔书也能同步? ...

有时间看代码没时间试一试吗
作者: caoli5288    时间: 2014-5-9 12:33
* 2014年5月9日 增加的英语支持 SQL代码部分改动。
作者: shenmadetoufa    时间: 2014-5-9 18:52
怒赞!比AppleSQL强大多了!
作者: caoli5288    时间: 2014-5-9 19:10
shenmadetoufa 发表于 2014-5-9 18:52
怒赞!比AppleSQL强大多了!

可以看看我发布的其他插件,都很有意思。
作者: 小白~    时间: 2014-5-9 20:25
可以当bc的同步背包使用吗?
作者: shenmadetoufa    时间: 2014-5-9 21:21
小白~ 发表于 2014-5-9 20:25
可以当bc的同步背包使用吗?

可以.0w0...
作者: minecraft_007    时间: 2014-5-12 12:45
yuxuanchiadm 发表于 2014-5-5 03:29
如果能够保存MOD自定义的NBT信息就好了,话说MCPC+没法把MOD自定义的NBT数据序列化一直是个硬伤。
另外数据 ...

你没发现他的 Connection就没关过么!
作者: caoli5288    时间: 2014-5-13 10:20
minecraft_007 发表于 昨天 12:45

你没发现他的 Connection就没关过么!

onEnable开,onDisable关,有任何问题。
作者: xingyu    时间: 2014-5-15 14:13
我很好奇。。。 如果几个服同时使用会怎么样, 玩家在几个服都是有道具的。。
作者: caoli5288    时间: 2014-5-17 09:35
注意与ESS的帽子功能冲突,请把ESS的帽子禁用。
作者: caoli5288    时间: 2014-5-18 00:00
* 2014年5月17日 修复如果保存的装备栏为空,将不会保存的问题。
作者: xingyu    时间: 2014-5-18 03:17
本帖最后由 xingyu 于 2014-5-18 03:24 编辑

楼主辛苦了
作者: qq200877776    时间: 2014-6-5 17:19
本帖最后由 qq200877776 于 2014-6-5 18:07 编辑

为什么我载入失败啊。
java.sql.SQLException: Field 'Locked' doesn't have a default value

@caoli5288
删除数据库表,在重新生成就好了、

作者: caoli5288    时间: 2014-6-7 12:48
2014年6月4日 保存生命上限
作者: caoli5288    时间: 2014-6-9 10:55
* 2014年6月9日 保存经济
作者: lidiwei    时间: 2014-6-12 22:47
提交bug 一进服时同步有延迟 会导致刷东西 最好一进服先清空背包再同步  
二 请加一个切换服务器的设置 输入指令跳转时 保存背包 3秒后切换服务器  
三 服务器stop 我不知道会不会保存背包数据  最好stop是自动执行保存背包指令
作者: caoli5288    时间: 2014-6-13 00:33
lidiwei 发表于 2014-6-12 22:47
提交bug 一进服时同步有延迟 会导致刷东西 最好一进服先清空背包再同步  
二 请加一个切换服务器的设置 输 ...

你说的第一点,不成立。默认10tick不可能有刷东西的时间,除非你服务器卡得10tick要走几秒钟。
第二点,请使用其他插件实现,本插件不是切服插件。
第三点,请放心有该功能。
作者: lidiwei    时间: 2014-6-13 13:16
caoli5288 发表于 2014-6-13 00:33
你说的第一点,不成立。默认10tick不可能有刷东西的时间,除非你服务器卡得10tick要走几秒钟。
第二点, ...

第一点 我会说我试过么
作者: lidiwei    时间: 2014-6-13 13:17
lidiwei 发表于 2014-6-13 13:16
第一点 我会说我试过么

还有数据锁异常是啥
作者: lidiwei    时间: 2014-6-13 13:18
lidiwei 发表于 2014-6-13 13:17
还有数据锁异常是啥

切换服务器这么快速 你背包保存够及时么
作者: caoli5288    时间: 2014-6-14 14:32
* 2014年6月9日 更新了数据锁
作者: caoli5288    时间: 2014-6-18 23:39
改进了保存经验值的机制
作者: 948701463    时间: 2014-7-7 13:57
饿,SQL是啥东西(尽情吐槽我把)
作者: chenguopei1    时间: 2014-7-8 00:34
!!!!!!!!!!!!!!!!!
作者: 422976313    时间: 2014-7-8 01:43
标记一下,这个插件逆天了。!
作者: 爱拍、川哥    时间: 2014-7-8 08:15
路过{:10_512:}
作者: xw2000922    时间: 2014-7-8 08:43
楼主你太棒了
作者: davia2009    时间: 2014-7-8 08:52
好东西我要拿走
作者: ciyunmuji    时间: 2014-7-8 09:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: chen331616551    时间: 2014-7-8 09:49
不错,我正好需要{:10_512:}
作者: 冰封印记    时间: 2014-7-8 16:54
来研究一下~~~
作者: marco2000111    时间: 2014-7-8 20:54
多謝大大
作者: 淡淡奶茉v3v    时间: 2014-7-8 20:55
很不錯的樣子@@
作者: 末影卐    时间: 2014-7-8 21:42
讓我看看
作者: 627241778    时间: 2014-7-8 23:52
感谢楼主的分享和开源
作者: w44225769    时间: 2014-7-9 02:42
{:10_527:}怎么用  和CB该如何配合
作者: 柠檬。    时间: 2014-7-9 06:24
看看。。。。。。。。。。。。        
作者: w756021889    时间: 2014-7-9 09:33
给我这个插件把
作者: 117ddc    时间: 2014-7-9 10:07
.....................................
作者: Minern    时间: 2014-7-9 14:25
{:10_522:}23333
作者: zkl123    时间: 2014-7-10 10:21
Mcbbs有你更加精彩~~~
作者: zkl123    时间: 2014-7-10 10:21
灵魂爱人 发表于 2014-5-5 07:25
好东西~

你的签名。。。

作者: wuchengxin    时间: 2014-7-10 14:49
非常好的插件 解决了崩溃带来的问题
作者: qq502024528    时间: 2014-7-10 14:53
好屌的样子    没有什么BUG吗
作者: 橡胶    时间: 2014-7-10 17:31
恩不错不错
作者: bonzilimcbbs    时间: 2014-7-10 17:58
支持一個
作者: 278640539    时间: 2014-7-11 09:37
看起来好厉害的样子

作者: 510006384    时间: 2014-7-11 10:53
貌似很好,看看
作者: 1615594341    时间: 2014-7-11 20:32
好  不错  {:10_513:}
作者: 1615594341    时间: 2014-7-11 20:33
不错 很好的插件~~{:10_512:}
作者: 1015229089    时间: 2014-7-11 21:32
赞一个 然后抱走
作者: 黑嘴鸥    时间: 2014-7-11 22:12
谔谔,楼主很棒啊 谢谢了~
作者: lanxing020    时间: 2014-7-12 02:37
支持!!!!!!!!!!!!
作者: Jack112233    时间: 2014-7-12 15:04
支持原创插件
作者: bior32    时间: 2014-7-12 16:25
DDDDDDDDDDDD
作者: 43420    时间: 2014-7-12 19:33
太好啦。。。。。。。。
作者: 1720942566    时间: 2014-7-12 19:38
好顶赞OTZ
作者: 知己    时间: 2014-7-12 19:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: 1372864019    时间: 2014-7-14 05:54
不知道这么用额
作者: 1532832428    时间: 2014-7-14 10:05
好!!!!!!!!!!!!!!!!!!!!!!



作者: hkpjun    时间: 2014-7-14 14:24
愿HIM与你同在
作者: 小佐佐    时间: 2014-7-14 15:55
真的好期待
作者: cctv45    时间: 2014-7-14 16:28
好顶赞!!!!!!!!!!
作者: mikali    时间: 2014-7-14 19:25
強插件!!!
作者: adfohaskdjfh    时间: 2014-7-14 19:52
啦啦啦。。
作者: KK44KK    时间: 2014-7-15 12:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: andrewkuo313    时间: 2014-7-15 13:14
阿...过往有用到资料库的伺服器几乎都会出现洗装备的问题
作者: 新时科技    时间: 2014-7-15 13:26
我赞一个,那还是要看插件咯
作者: tttt5000    时间: 2014-7-15 13:33
正好想开个1.7.2的服务器
作者: 练习册    时间: 2014-7-15 18:28
马克一下[说好的AppleSQL呢?
作者: q2288228    时间: 2014-7-15 18:58
灵魂爱人 发表于 2014-5-5 07:25
好东西~

大家好  我要用这个!!
作者: xxd2609    时间: 2014-7-15 19:11
。。。。。。。。。。。。。。。。。。。。
作者: 雾の湖    时间: 2014-7-16 08:52
我好想要!
作者: q2308577374    时间: 2014-7-16 09:41
不错不错。我收下了