马上登录/注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
undefinedPassCard-Proundefined 使用数据库的通行证/战令插件 v1.3.2 | [前言]
为了让Minecraft中拥有和众多网游一样的通行证/战令玩法,经过彻夜苦写(咕)
这个插件便诞生了!
插件支持1.8-1.16.5,高版本正在进行支持,低版本请移步 DamageAward
注:1.8-1.11仅简单测试.
[插件功能]
作为一款娱乐向的插件,它还原了大部分的通行证功能,同时结合游戏玩法,做了很多改变。
1.支持数据库/本地存储:为了方便各类的腐竹需求,插件支持了mysql数据库和yml本地存储的方式。
2.支持奖励预览:作为玩家,最能激励我氪金的就是奖励摆在我面前了XD,进阶、普通奖励都可以在gui中提前预览,并且可以自定义任何描述,界面还可以丝滑的翻页~
3.支持PAPI变量:插件已经注册了7个papi变量,后续会继续添加,具体变量请查阅【其他】。
4.13+基本任务种类:满足更多的腐竹需求,后续还会不断更新任务种类,具体任务种类请查阅【任务系统】。
5.赛季机制:自定义赛季名称,赛季持续时间,赛季结束会清除所有的玩家数据~
6.无限添加奖励:你可以做10个奖励,50个,甚至是100个,只要你想让玩家肝!
7.宝可梦拓展 5+任务:和本体一同更新的宝可梦拓展,让你的战令支持宝可梦吧!详情请查阅【拓展】。
更多:
进阶/普通通行证状态;
Gui界面随意调整;
通行证排行榜;
每周点数上限;
支持众多RPG插件所造成的伤害(非凡,sx,SkillApi等);
支持MM等怪物插件;
多语言文件支持; |
|
[图片展示] | 图多,流量慎入! 已抹去信息,如有遗漏还望提醒! |
|
教程1->[任务系统] | 任务系统介绍: 任务系统分为两大部分:每周固定任务 & 个人随机任务; 每周固定任务由系统随机抽取6个任务作为本周的固定任务,即每个玩家都会有这6个任务。 个人随机任务是指,在由管理员设定的任务中,随机抽取3个可以作为随机任务的任务,作为玩家的每周随机任务,每个玩家的随机任务均不同,由系统随机分配。 任务系统教学: 1.任务类型以及介绍:任务类型:
CONSUME:
Type格式: CONSUME_物品类型.
Require格式: 无符号正整数.
备注: 当玩家消耗完物品时, 此任务将触发 例如食物, 药水, 牛奶桶).√
可用参数: 使用/** itemType获取手中物品类型.
RIPTIDE:
Type格式: RIPTIDE.
Require格式: 无符号正整数.
备注: 当玩家在使用三叉戟上的激流附魔推动它们在空中飞行(需要在雨天才能在空中飞行)时触发本任务.√
SHEAR:
Type格式: SHEAR_实体类型.
Require格式: 无符号正整数.
备注: 玩家使用剪刀采集羊毛,雪傀儡,哞牛到达一定次数视为完成一次.√
可用参数: 使用/** clicker查看相应生物类型.
KILLE:
Type格式: KILLE_怪物名关键字.
Require格式: 无符号正整数.
备注: 击杀相应名称中包含关键字的怪物视为完成一次.√
可用参数: 任意自定义字符
KILL:
Type格式: KILL_怪物类型.
Require格式: 无符号正整数.
备注: 击杀相应类型的怪物视为完成一次.√
可用参数:
CHAT:
Type格式: CHAT.
Require格式: 正整数.
备注: 发言到相应次数视为完成一次.√
DAMAGE:
Type格式: DAMAGE_怪物名关键字.
Require格式: 正数,可以是小数.
备注: 对名字中包含关键字的怪物造成了指定伤害视为完成一次.√
可用参数: 任意自定义字符.
DAMAGETIME:
Type: DAMAGETIME_怪物名关键字
Require格式: 正整数.
备注: 对名字中包含关键字的怪物造成攻击伤害的次数,到达需求即视为完成一次.√
可用参数: 任意自定义字符.
POKEMON:
注意: 需要[Pixelmon]拓展.
类型以及详解:
CANDYE:
Require格式: 正整数
备注: 使用任意稀有糖果完成一次.√
BEATTRAINER:
Require格式: 正整数
备注: 击败训练师可完成一次.√
CATCHE:
Require格式: 正整数
备注: 捕捉任意宝可梦即可完成一次.√
CATCH_宝可梦ID:
Require格式: 正整数
备注: 捕捉指定宝可梦即可完成一次.√
POKEMON_PVP:
Require格式: 正整数.
备注: 完成一次PVP,即宝可梦双人对战即视为完成一次,不计算失败胜利.√
POKEMON_PVP_WIN:
Require格式: 正整数.
备注: 完成一次PVP,即宝可梦双人对战胜利即视为完成一次.√
POKEMON_PVP_FAIL:
Require格式: 正整数.
备注: 完成一次PVP,即宝可梦双人对战失败即视为完成一次.√
POKEMON_PVE:
Require格式: 正整数.
备注: 完成一次PVE,即对战野生精灵一次,不计算失败胜利.√
POKEMON_PVE_WIN:
Require格式: 正整数.
备注: 完成一次PVE,对战野生精灵一次胜利即视为完成一次.√
POKEMON_PVE_FAIL:
Require格式: 正整数.
备注: 完成一次PVE,对战野生精灵一次失败即视为完成一次.√
COLLECT:
Type格式: COLLECT_物品英文ID.
Require格式: 正整数.
备注: 收集/拾取到相应数量物品视为完成一次.√
可用参数: 任意物品英文ID
警告:
问题: 存在一个物品反复拾取/丢弃刷任务的问题.
解决方法: 使用击杀或破坏类任务代替或设置数量较大即可.
DROP:
Type格式: DROP_物品英文ID.
Require格式: 正整数.
备注: 丢弃到相应数量物品视为完成一次.√
可用参数: 任意物品英文ID
警告:
问题: 存在一个物品反复拾取/丢弃刷任务的问题.
解决方法: 使用击杀或破坏类任务代替.
DESTROY:
Type格式: DESTORY_方块英文ID.
Require格式: 正整数.
备注: 破坏相应数量方块视为完成一次.√
可用参数:
COMMAND:
Type格式: COMMAND_指令头.
Require格式: 正整数.
备注: 使用相应的指令头的指令视为完成一次.√
可用参数: 任意注册指令.
DOUBLEJUMP:
Type格式: DOUBLEJUMP.
Require格式: 正整数.
备注: 双跳跃(双击空格,建议添加相应功能插件)次数到达相应次数视为完成一次.√
KILLPLAYER:
Type格式: KILLPLAYER.
Require格式: 正整数.
备注: 击杀玩家到达指定数量视为完成一次.√
DAMAGEPLAYER:
Type格式: DAMAGEPLAYER.
Require格式: 正数,可以是小数.
备注: 对玩家造成指定伤害视为完成一次.√
ITEMBREAK:
Type格式: ITEMBREAK_物品英文ID
Require格式: 正整数
备注: 将工具耐久使用至0(损坏)则视为完成一次.√
|
2.开始设置任务:
安装插件:1.下载插件丢进plugin;
2.重启后设置好config.yml,比如是否使用数据库等,本地存储请将mysql关闭;
3.重启,开始配置任务;
(1)指令方式:
添加:
cmd: /p-c-p addMission <missionId> <name> <type> <require> <givenPoint> <maxTime> <random> 新增一条任务数据
<missionId>: 任务标号,唯一,长度最大为32位;
<name>:任务展示名称,可以使用彩色符号;
<type>: 任务种类,按照任务类型文档填写(如果是击杀相应生物或者破坏相应物品,可以使用/p-c-p itemType 和 /p-c-p clicker指令);
<givenPoint>: 任务完成后给予的通行证奖励;
<maxTime>:每周可以完成的次数;
<random>:是否可以作为随机任务被分发;
设置描述:
/p-c-p setDesc <missionId> <desc> 设置任务描述
<missionId>: 已有任务标号,唯一,长度最大为32位;
<desc>: 描述,可以带颜色符,不可用空格;
(2)MySql语句添加: insert into mission_data (mission_id,`name`,`type`,`require`,given_point,max_time,random,`desc`) values ('10002','§4重创敌人','DAMAGEPLAYER','2000',20,8,true,'&9[&e伤害2000&9]&b尽情伤害你的敌人吧!');
注意:
随机任务(random=true)数量必须达到3+;
任务总数务必达到9+;
下一步:关闭服务器,暂时不要开启。
|
|
教程2-> [Config.yml等设置] | Config.yml配置:#MySql数据库设置
MySql:
#是否使用数据库,设置为false则使用本地yml存储数据
UseSql: false
DatabaseName: pcdata
UserName: root
Password: 123456
Port: 3306
Ip: localhost
#应用的语言文件
Language: zh_CN
#是否开始双跳任务以及监听支持(双跳可能不兼容部分插件)
DoubleJump: true
#每周最大点数
WeekMaxPoint:
Default: 1000
Vip: 1500
#刷新间隔-单位:秒
Refresh: 3
#PapiHook的方式,老版本请写1 ,如果hook失败请写2
Papi: 2
#任务是否设置完成
#请在确保任务数量>=9且有三个随机任务后手动改为true,否则会出现报错等问题
Mission:
Complete: false
#玩家三个随机任务数据更新方式: #daily-每日 #weekly-每周
Refresh: "daily"
#提示方式:
Notice:
#TiTle提示
Title: true
#消息提示
Msg: false
#拥有该权限将不会被阻止飞行
Permission:
Fly: "essentials.fly"
#界面设置
Gui:
Award:
Title: "§c§l通行证奖励"
#排行机制: 等级+点数 等级优先>点数优先
TopDesc: "§eTop.<top> §a<player> §9(§d<level>级§e<point>点§9)"
SeasonDesc:
- "§e§l <seasonName>"
- "§b§l>> §e赛季持续时间:"
- " §8▶ <continue>"
- " "
- "§b§l>> §d赛季开始日期:"
- " §8▶ <startDay>"
- " "
- "§b§l>> §c剩余时间:"
- " §8▶ <leftDay>"
Menu:
Title: "§bPassCardPro通行证"
Vip: "§9[§6§l进阶§9]"
Default: "§9[§a普通§9]"
Desc:
- "§b§l>> <player> <vip>"
- "§b§l>> §a通行证等级:"
- " §8▶ <level>"
- " "
- "§b§l>> §d当前点数:"
- " §8▶ <point>"
- " "
- "§b§l>> §c本周点数:"
- " §8▶ <weekPoint>/<maxWeekPoint>"
- " "
- "§b§l>> §6奖励领取状态(个数):"
- " §8▶ &a普通奖励: §e<defaultGets>"
- " §8▶ §d进阶奖励: §e<vipGets>"
- " "
- "§b§l>> §d升级还需:"
- " §8▶ §e<nextLevelNeedPoint> §a点"
Mission:
Title: "§e§l任务详情"
Finish: "§9[§b§l已完成!§9]"
Continue: "§9[§a§l进行中...§9]"
Desc:
- "§b§l>> §a任务:"
- " §8▶ <missionName>"
- " §8▶ <missionDesc>"
- " "
- "§b§l>> §e任务进度:"
- " §8▶ <rate>/<require>"
- " "
- "§b§l>> §e任务完成次数/最大完成次数:"
- " §8▶ <finishTime>/<maxTime>"
- " "
- "§b§l>> §e奖励点数:"
- " §8▶ <givenPoint>"
- " "
- "§b§l>> §d编号:"
- " §8♦ <missionId>"
|
AwardLevel.yml:#等级
1:
#普通玩家奖励
Default:
#显示在界面上的物品代号,如果不想开启这个奖励,将Display行整行删除即可
Display: skin
#领取后执行的指令
Command:
- 'eco give <player> 1000'
#给予的物品,也在award/item.yml中保存
Item: []
#进阶奖励
Vip:
Display: skin
Command:
- 'eco give <player> 5000'
Item:
- skin
- skin
#到达该等级需要的点数,到达后即扣除
Point: 10
2:
Default:
Display: rabbit_meat
Command:
- 'eco give <player> 1000'
Item:
- rabbit_meat
Vip:
Display: rabbit_meat
Command:
- 'eco give <player> 5000'
Item:
- rabbit_meat
Point: 50
3:
Default:
Display: rabbit_skin
Command:
- 'eco give <player> 1000'
Item: []
Vip:
Display: rabbit_skin
Command:
- 'eco give <player> 5000'
Item:
- rabbit_skin
Point: 100
|
其他文件不需要手动配置,配置完成后即可开服,需要注意的是:
如果您想让普通战令的某一个奖励关闭,仅将Display项删除即可! |
|
[其他问题] | undefinedQ:我在使用插件时遇到了报错怎么办? undefinedA:1.首先检查您的配置是否正确;2.将错误报告提交,同时标明版本号以及核心; undefinedQ:怎么给玩家开通进阶版的啊? undefinedA:你可以看看help帮助也许; undefinedQ:我配置完了任务重启之后怎么啥都没有啊!
undefinedA:请把config.yml中的Mission.Complete设置为true; undefinedQ:插件还有什么BUG吗?
undefinedA:插件目前刚进行过简单的测试(mysql&yml),如果还有任何BUG请及时回复方便修复哦~
undefinedQ:插件总是显示"正在为您准备通行证信息请稍后"怎么办?
undefinedA:首先,确保您已经按照教程设置好了任务和配置文件,其次请不要使用yum等插件在线加载本插件!
undefinedQ:作者好帅!
undefinedA:一般般帅~ |
|
[拓展] |
须知: 测试环境:Cat端最新版;Pixelmon7.2.0-重铸;SQL模式;本体最新版; Cat端本体任务类型未测试,宝可梦新增任务仅进行简单测试;
拓展任务类型[已更新]:POKEMON:
注意: 需要[Pixelmon]拓展.
类型以及详解:
CANDYE:
Require格式: 正整数
备注: 使用任意稀有糖果完成一次.√
BEATTRAINER:
Require格式: 正整数
备注: 击败训练师可完成一次.√
CATCHE:
Require格式: 正整数
备注: 捕捉任意宝可梦即可完成一次.√
CATCH_宝可梦ID:
Require格式: 正整数
备注: 捕捉指定宝可梦即可完成一次.√
POKEMON_PVP:
Require格式: 正整数.
备注: 完成一次PVP,即宝可梦双人对战即视为完成一次,不计算失败胜利.√
POKEMON_PVP_WIN:
Require格式: 正整数.
备注: 完成一次PVP,即宝可梦双人对战胜利即视为完成一次.√
POKEMON_PVP_FAIL:
Require格式: 正整数.
备注: 完成一次PVP,即宝可梦双人对战失败即视为完成一次.√
POKEMON_PVE:
Require格式: 正整数.
备注: 完成一次PVE,即对战野生精灵一次,不计算失败胜利.√
POKEMON_PVE_WIN:
Require格式: 正整数.
备注: 完成一次PVE,对战野生精灵一次胜利即视为完成一次.√
POKEMON_PVE_FAIL:
Require格式: 正整数.
备注: 完成一次PVE,对战野生精灵一次失败即视为完成一次.√
注:
后续会增加更多宝可梦任务类型。
[VexView拓展]:
开发中,三个界面的图和按钮对于我这个P图渣渣来说属实有点难搞...
如果你愿意帮助我制作界面图片,这可能会加快我的开发~
[其他拓展]:
开发中...
|
|
[其他] | BUG反馈:个人QQ 1990588801 (备注插件);
新建的交流群undefined:885308247
建议&意见:请在本帖回复~
测试情况: 插件目前仅在 1.12.2 spigot 、 1.15 spigot 和 1.16.1 paperSpigot中进行测试,其他版本兼容性未知,理论支持1.12-1.16; CatServer初步测试兼容。 欢迎各位进行测试,将尽快对1.12+版本进行兼容!
PAPI变量: 如果Hook失败(变量不显示),请在config.yml尝试设置hook方式: 1:老版本 2:新版本[推荐] PassCardPro_point: 玩家当前点数PassCardPro_level: 玩家当前等级 PassCardPro_maxWeekPoint: 玩家每周最大上限点数 PassCardPro_isVip: 玩家是否为VIP PassCardPro_upgrade: 玩家升级还需要多少点 PassCardPro_seasonName: 当前赛季名称 PassCardPro_seasonLeftDay: 赛季剩余天数
关于拓展: 如果你想做一些拓展插件,可以调用API(PassCard.passCardAPI.xxx();) API: /**
* 启动数据连接
*
* @return 是否成功
*/
boolean enableDataBase();
/**
* 获取玩家的任务列表
*
* @param player 玩家
* @return 任务列表
*/
List<Mission> getPlayerMissionList(Player player);
/**
* 更新玩家的任务进度
* 前进行判断:
* 1 是否已经达到最大完成次数
* 2 是否已经到达本周最大点数
* 后进行更新:
* 1 判断是否到达要求
* -是:更新点数、完成次数
*
* @param player 玩家
* @param missionId 任务ID
* @param rate 新进度
*/
void updatePlayerMissionRate(Player player,String missionId,String rate);
/**
* 更新玩家随机任务进度
*
* @param player 玩家
* @param missionId 任务ID
* @param rate 进度
*/
void updatePlayerRandomMissionRate(Player player,String missionId,String rate);
/**
* 通过任务ID获取任务内容
*
* @param missionId 任务ID
* @return 任务
*/
Mission getMissionById(String missionId);
/**
* 根据玩家和任务ID获取具体的任务进度
*
* @param player 玩家
* @return 玩家任务进度
*/
Map<String,String> getPlayerMissionByPlayer(Player player);
/**
* 获取本周任务列表
*
* @param weekId 本周ID
* @return 任务列表
*/
List<Mission> getWeekMissionList(String weekId);
/**
* 获取玩家当前数据
* @param player 玩家
* @return PassCardPlayer实体类
*/
PassCardPlayer getPlayerData(Player player);
/**
* 通过uuid获取玩家数据
*
* @param UUID 玩家UUID
* @return PassCardPlayer实体类
*/
PassCardPlayer getPlayerData(String UUID);
/**
* 检查并更新玩家任务数据等
*
* @param player 玩家
*/
void checkAndUpdatePlayerData(Player player);
/**
* 根据uuid获取TopPlayer
*
* @param uuid 玩家uuid
* @return topPlayer
*/
TopPlayer getTopPlayer(String uuid);
/**
* 改变玩家点点数
*
* @param passCardPlayer 玩家
* @param points 增加的点数 可为负数
* @param checkLevel 是否检查等级
* @param notice 是否提示
*/
void updatePlayerPoint(PassCardPlayer passCardPlayer,double points,boolean checkLevel,boolean notice);
/**
* 检查玩家等级并更新
*
* @param passCardPlayer 玩家
* @param isAdd 是否为增加等级
*/
void updatePlayerLevel(PassCardPlayer passCardPlayer,boolean isAdd);
/**
* 检查玩家当前获取的周点数是否到达了上限
*
* @param passCardPlayer 玩家
* @return 是否到达上限
*/
boolean playerWeekPointIsMax(PassCardPlayer passCardPlayer);
/**
* 更新玩家每周点数
*
* @param passCardPlayer 玩家
* @param points 点数 可为负数
*/
void updatePlayerWeekPoint(PassCardPlayer passCardPlayer,double points);
/**
* 新建玩家数据
*
* @param player 玩家
*/
void createPlayerData(Player player);
/**
* 新建玩家任务数据
*
* @param player 玩家
*/
void createPlayerMissionData(Player player);
/**
* 获取一条随机任务
*
* @param needRandom 是否需要random项为true
* @return 随机任务
*/
Mission getRandomMission(boolean needRandom);
/**
* 新建一条任务数据
*
* @param mission 任务
* @return 是否成功
*/
boolean createNewMissionData(Mission mission);
/**
* 获取玩家的任务进度
*
* @param player 玩家
* @return 任务进度列表
*/
MissionPlayer getPlayerMissionData(Player player);
/**
* 获取玩家到达下一个等级需要多少点数
*
* @param player 玩家
* @return 点数
*/
double getPlayerNextLevelNeedPoint(Player player);
/**
* 获取前10玩家排名
*
* @return 排行Map
*/
ConcurrentHashMap<Integer,TopPlayer> getTop10Player();
/**
* 重置每周任务
*/
void resetWeekMission();
/**
* 删除玩家数据
*
* @param player 玩家
*/
void deletePlayerMissionData(Player player);
/**
* 获取玩家随机任务数据
*
* @param player 玩家
* @return 随机任务数据集
*/
List<Mission> getPlayerRandomMissionData(Player player);
/**
* 更新玩家数据库数据
*
* @param passCardPlayer 玩家
* @param gets 本次获取的普通奖励个数
* @param vipGets 本次获取的VIP奖励个数
*/
void updatePassCardPlayerGets(PassCardPlayer passCardPlayer, int gets, int vipGets);
/**
* 更新任务描述
*
* @param missionId 任务ID
* @param desc 描述
* @param player 玩家
*/
void updateMissionDesc(String missionId,String desc,Player player);
/**
* 设置玩家的VIP状态
*
* @param player 玩家
* @param setVip 是否vip
* @param sender 指令发送者
*/
void updatePlayerVip(Player player,boolean setVip, CommandSender sender);
/**
* 获取当前赛季数据
*
* @return 当前赛季
*/
Season getNowSeasonData();
/**
* 重置玩家赛季数据
*/
void resetPlayerSeasonData();
/**
* 新建一个赛季
*
* @param season 赛季
*/
void updateNewSeason(Season season);
/**
* 更新一个赛季名称
*
* @param seasonName 赛季名称
* @param sender 执行者
*/
void updateSeasonName(String seasonName , CommandSender sender);
/**
* 更新一个赛季时长
*
* @param continueDays 持续时间
* @param commandSender 执行者
*/
void updateSeasonContinueDays(int continueDays , CommandSender commandSender);
/**
* 新建一个赛季数据
*/
void createSeasonData();
/**
* 获取所有的任务数据
*
* @return 任务数据集
*/
List<Mission> getAllMissionData();
/**
* 根据任务ID删除任务
*
* @param missionId 任务ID
* @param commandSender 执行者
*/
void deleteMissionById(String missionId,CommandSender commandSender);
/**
* 关闭数据连接
*/
void closeDataBase();
|
关于开源:
如果你需要跟你服务器不同情况进行二次开发,可以clone开源项目:
PassCardPro
但是,您不可以:1.进行任何商业用途;2.二次开发后进行二次发布;3.修改原有作者信息
and: 几年前的代码,质量不高,见谅~或者您可以点个star(厚脸皮行为)
如果你喜欢本插件,可以给我个人气或者金粒哦~
本插件所用所有代码均为原创,不存在借用/抄袭等行为 |
|
|