本帖最后由 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



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



我感觉你好热衷于数据库的插件..刺激俺们不会用么{:10_522:}
可以利用这个来跨服同步数据吗?
嘿嘿 起码注释里加个有部分代码来自~~~ 你懂得~~~
如果能够保存MOD自定义的NBT信息就好了,话说MCPC+没法把MOD自定义的NBT数据序列化一直是个硬伤。
另外数据库建议用PreparedStatement,不然可能会存在注入问题,望改进\ w /。
另外数据库建议用PreparedStatement,不然可能会存在注入问题,望改进\ w /。
很好用的样子A.A
qiu1995 发表于 2014-5-5 01:04
可以利用这个来跨服同步数据吗?
我猜应该可以 不过大概要改编一下
另外从SQL里读出玩家数据后直接split(";")真的大丈夫么,比如书之类的东西如果里面含有;这字符就玩脱了吧/w\
建议采取在每个物品头部记录一个物品序列化字符串的长度,然后通过读取的时候通过此长度来正确识别一个物品。
yuxuanchiadm 发表于 2014-5-5 03:34
另外从SQL里读出玩家数据后直接split(";")真的大丈夫么,比如书之类的东西如果里面含有;这字符就玩脱了吧/w ...
这个正解,我的showoff插件就有这个问题
好吧又妄下结论了→ →,直觉性以为是用的Bukkit的序列化函数→ →,首先是否能序列化带非Bukkit的自定义NBT信息有待考证。其次ProtocolLib使用Base-64,不包含;字符,不存在玩脱的情况。
至于SQL注♂入,应该是有这问题,比如单个单引号啥的名字就玩脱了,LZ尽早修了吧,不然到时候最简单的注入就是使用别人玩家的账号数据以及刷物品了→ →,至于具体怎么注入就不发出来了。
哎呀,ProtocolLib。MCPC服要跪。。。不考虑顺便支持一下多世界多背包么?
{:10_523:}好东西~
yuxuanchiadm 发表于 2 小时前
至于SQL注♂入,应该是有这问题,比如单个单引号啥的名字就玩脱了,LZ尽早修了吧,不然到时候最简单的注入就是使用别人玩家的账号数据以及刷物品了→ →,至于具体怎么注入就不发出来了。
注入问题好解决,晚上解决看看,,,一般的登陆插件允许名字里面带符号吗?
qiu1995 发表于 2014-5-5 01:04
可以利用这个来跨服同步数据吗?
我也想到了可以实现这个= =
宠物也弄一下吧
跨服同步狗狗
跨服同步狗狗
caoli5288 发表于 2014-5-5 07:28
注入问题好解决,晚上解决看看,,,一般的登陆插件允许名字里面带符号吗? ...
问题不在登陆插件,即使登陆插件检测到用户名含有空格或特殊字符,并吧玩家T掉也还是能够注入,因为登陆事件还是会调度。应该从根源解决问题,进行SQL注入检测或使用预编译SQL。
yuxuanchiadm 发表于 半小时前
问题不在登陆插件,即使登陆插件检测到用户名含有空格或特殊字符,并吧玩家T掉也还是能够注入,因为登陆事件还是会调度。应该从根源解决问题,进行SQL注入检测或使用预编译SQL。
好的,我疏忽了(⊙_⊙)
yuxuanchiadm 发表于 2014-5-5 07:45
问题不在登陆插件,即使登陆插件检测到用户名含有空格或特殊字符,并吧玩家T掉也还是能够注入,因为登陆 ...
https://www.dropbox.com/s/ql50in ... 8%8653%E7%A7%92.png
已验证服务度自己会踢掉名字带引号的玩家,这一过程发生在PlayerLoginEvent,所以对我的插件没影响。
PreparedStatament在不复用的情况下效率不高,我就不改代码了。
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());
}
}
貌似这样可以很好的调用到网页中去哪?
* 2014年5月6日 不再保存空气方块了
感谢LZ分享 略吊
看了你的源码,但是我想问的是你的附魔真的可以同步?
还有附魔书也能同步?
还有附魔书也能同步?
LaoChen 发表于 2014-5-9 10:26
看了你的源码,但是我想问的是你的附魔真的可以同步?
还有附魔书也能同步? ...
有时间看代码没时间试一试吗
* 2014年5月9日 增加的英语支持 SQL代码部分改动。
怒赞!比AppleSQL强大多了!
shenmadetoufa 发表于 2014-5-9 18:52
怒赞!比AppleSQL强大多了!
可以看看我发布的其他插件,都很有意思。
可以当bc的同步背包使用吗?
小白~ 发表于 2014-5-9 20:25
可以当bc的同步背包使用吗?
可以.0w0...
yuxuanchiadm 发表于 2014-5-5 03:29
如果能够保存MOD自定义的NBT信息就好了,话说MCPC+没法把MOD自定义的NBT数据序列化一直是个硬伤。
另外数据 ...
你没发现他的 Connection就没关过么!
我很好奇。。。 如果几个服同时使用会怎么样, 玩家在几个服都是有道具的。。
注意与ESS的帽子功能冲突,请把ESS的帽子禁用。
* 2014年5月17日 修复如果保存的装备栏为空,将不会保存的问题。
 本帖最后由 xingyu 于 2014-5-18 03:24 编辑 
楼主辛苦了
楼主辛苦了
 本帖最后由 qq200877776 于 2014-6-5 18:07 编辑 
为什么我载入失败啊。
java.sql.SQLException: Field 'Locked' doesn't have a default value
@caoli5288
删除数据库表,在重新生成就好了、
为什么我载入失败啊。
java.sql.SQLException: Field 'Locked' doesn't have a default value
@caoli5288
删除数据库表,在重新生成就好了、
2014年6月4日 保存生命上限
* 2014年6月9日 保存经济
提交bug 一进服时同步有延迟 会导致刷东西 最好一进服先清空背包再同步  
二 请加一个切换服务器的设置 输入指令跳转时 保存背包 3秒后切换服务器
三 服务器stop 我不知道会不会保存背包数据 最好stop是自动执行保存背包指令
二 请加一个切换服务器的设置 输入指令跳转时 保存背包 3秒后切换服务器
三 服务器stop 我不知道会不会保存背包数据 最好stop是自动执行保存背包指令
lidiwei 发表于 2014-6-12 22:47
提交bug 一进服时同步有延迟 会导致刷东西 最好一进服先清空背包再同步
二 请加一个切换服务器的设置 输 ...
你说的第一点,不成立。默认10tick不可能有刷东西的时间,除非你服务器卡得10tick要走几秒钟。
第二点,请使用其他插件实现,本插件不是切服插件。
第三点,请放心有该功能。
caoli5288 发表于 2014-6-13 00:33
你说的第一点,不成立。默认10tick不可能有刷东西的时间,除非你服务器卡得10tick要走几秒钟。
第二点, ...
第一点 我会说我试过么
lidiwei 发表于 2014-6-13 13:16
第一点 我会说我试过么
还有数据锁异常是啥
lidiwei 发表于 2014-6-13 13:17
还有数据锁异常是啥
切换服务器这么快速 你背包保存够及时么
* 2014年6月9日 更新了数据锁
改进了保存经验值的机制
饿,SQL是啥东西(尽情吐槽我把)
!!!!!!!!!!!!!!!!!
