Minecraft_Plugin
1.项目概述
1.1 项目简介
小组准备编写一个具有武器战斗,道具收集、互动社交和任务悬赏四大系统的聚合插件。
武器战斗系统主要包括武器强化,武器特效和武器词缀三个模块。武器强化和武器词缀用于强化武器的属性,而武器特效则用于优化武器的攻击画面。
道具收集系统是以图鉴形式展示玩家对于游戏的探索程度,可以满足玩家的收集欲。这个系统主要由装备图鉴、怪物图鉴、植物图鉴、烹饪图鉴和收集奖励五个模块组成。装备图鉴可以细分为武器图鉴和防具图鉴。怪物图鉴记录玩家击杀过的怪物的种类和个数。植物图鉴记录玩家通过自己种植收获的植物的种类。烹饪图鉴需要玩家使用自己收获以及拾取的食材制作成对应的食物进行解锁。而玩家在每样图鉴收集到一定数目之后都可以领取相应的收集奖励。
互动社交系统主要包括好感度和羁绊两大模块,玩家之间的互动比如互送礼品、相互交流和组队打怪都可以增加好感度,而如果两个玩家之间相互攻击则会减少好感度。当好感度达到不同的数值时就可以解锁不同的羁绊,不同等级的羁绊可以解锁不同等级的羁绊属性加成。并且如果两个玩家之间的好感度达到一定程度就可以确定相处关系,目前讨论的有陌生人/熟人/朋友/闺蜜(死党)/情侣/夫妻这几个等级。而如果两个玩家之间的好感度为负则会转化为仇恨值,仇恨值会降低这两个玩家组队时的收益,并且也会让他们仇人见面分外眼红,两玩家对战时都会有伤害加成。
任务悬赏系统是一个需要玩家完成系统提供的或者其他玩家提供的悬赏任务来换取奖励的系统,在这个系统中既会有简单的刷怪和收集任务也会有与好感度系统相关的送礼或者追杀任务。完成任务之后就可以获取相应的奖励。
2.系统设计
2.1 概要设计
图2-1 系统功能图
2.2 数据结构/数据库设计
表2-1 数据字典表
2.3界面设计
1.图鉴列表(包括植物、生物、装备、成就)
植物、生物、装备、成就均可通过ButtonClick直接跳转
同时还有 一个返回主菜单按钮 一个关闭Gui按钮
2.植物图鉴(一个返回图鉴列表按钮 一个关闭Gui按钮 以及排列好的植物Image若干)
3.生物图鉴(一个返回图鉴列表按钮 一个关闭Gui按钮 以及排列好的生物Image若干)
4.装备图鉴(一个返回图鉴列表按钮 一个关闭Gui按钮 以及排列好的装备Image若干)
5.成就图鉴(一个返回图鉴列表按钮 一个关闭Gui按钮 一个可跳转至成就奖励界面的Button 以及排列好的成就及需求若干)
6.奖励图鉴(玩家成就点数 及排列好的成就段位、段位奖励极其装备的跳转按钮
一个返回图鉴列表按钮 一个关闭Gui按钮 以及预设的成就点数使奖励分级可点击)
2.4 敏捷任务看板/燃尽图
图2-2 燃尽图
3.功能模块成果展示
图鉴命令+图鉴Gui设计+成就系统:
①编写yml文件,赋予玩家可用操作命令以及权限,包括打开图鉴及装备称号等相关需要输入命令以实现;
②编写Command类,对命令进行输入和玩家权限判断以及对玩家进行操作提示;
③在插件main方法中对命令进行注册,使命令可用可操作;
④利用VexView绘制图鉴Gui,添加VexButton并利用ButtonClickEvent实现界面跳转等操作;
⑤绘制成就系统及奖励界面Gui;通过管理员设置成就点数或玩家完成成就任务以获取成就点;
⑥通过成就点数判断成就段位,并获取可用奖励,包括特效和称号。
3.1 图鉴命令设计
3.2 图鉴Gui设计
3.3 成就系统
4.个人总结
个人完成部分代码管理:
链接: Minecraft_Plugin:图鉴Gui+命令权限+成就系统+简单特效.
仅供参考
经验及收获
基于Java的Minecraft游戏后端自定义插件项目中逐步学习了并编码实现了初识服务端与客户端;认识了服务端与开的户段的交互流程;开发环境的配置与搭建;github与gitee使用;编写了一个插件并了解了javaDoc;学会了注册命令与处理;学习了权限;游戏事件监听;以及容器与方块;Entity对象实体的操作;以及粒子特效的编写与BukkitRunable;和物品与玩家数据持久化存储;以及Vexview界面绘制与扩展时间的使用。实践开始前,没有多少敏捷模式项目经验,加强了对项目的认识和管理,体验了敏捷开发的项目过程和过程交付物,对项目过程划分和各个阶段的职责有一个初步了解。此外,对敏捷项目开发模型有了基本认知,熟悉了Java的语言开发工具IDEA和Spigot插件开发的Bukkit等相关内容的开发技术。在基于Java的Minecraft游戏后端自定义插件开发过程中,学习了命令与权限、SQLite、VexView界面绘制、Inventory与方块、粒子特效绘制与BukkitRunable定时器的相关操作。
答辩或质疑记录:
1.如何进行命令的设计以实现玩家输入相应的指令完成相应的操作?
①编写yml文件,赋予玩家可用操作命令以及权限,包括打开图鉴及装备称号等相关需要输入命令以实现,例如/open 以打开各种界面,/vftxi 以装备特效及称号,/chengjiu 设置或查询玩家的成就点数;
②编写Command类,
如对命令进行输入和玩家权限判断以及对玩家进行操作提示;
③在插件main方法中对命令进行注册,使命令可用可操作。
2.如何实现VexView绘制的Gui界面中VexButton的点击完成相应的操作如界面跳转?
通过赋予VexView绘制的Gui界面中相同功能的VexButton以相同的ButtonID,通过ButtonClickEvent中的getButtonID();方法获取每一个按钮的ID并赋予其所需要的方法,当监听到玩家点击了某个Button时,获取其ID并调用其方法如VexViewAPI.openGui()方法以实现界面跳转或其他功能。
3.如何实现成就系统中段位奖励的分级可点击跳转装备?
成就点数,玩家可以通过完成成就任务获得,或是直接由管理员设置;此次实践中采用/chengjiu set 方法设置玩家的成就点数并存储到数据库中,可以通过/chengjiu
get 方法查询。奖励界面通过判断玩家的成就点数,是否符合段位要求,如果符合Vex绘制Gui中显示的为Button,可以点击跳转进行装备奖励;如果不符合段位要求,则显示的为Image,并提示为“不可点击”。