DwarfCraft 是一款 RPG 插件,允许玩家通过提升角色技能来增强能力。玩家可以向训练师支付物品来提升技能,从而获得诸如增加武器伤害、减少工具损耗、提高方块或生物掉落等收益。其训练系统为生存多人服务器提供了一个有趣且持久的 RPG 基础,同时可自定义的种族设定也为服务器故事背景增添了深度。
核心特性
- 种族系统:玩家可选择扮演任何已配置的种族。默认提供人类、侏儒、矮人和精灵。切换种族将重置所有技能。种族名称完全可配置。若玩家未选择种族,将默认使用配置文件中的设置,或强制其选择后才能开始升级。
- 交互式训练界面:玩家使用物品 GUI(见第二张截图)进行技能训练和向训练师缴纳物品。
- 青色按钮:缴纳所有可用的所需物品给训练师。
- 黄绿色按钮:训练技能。
- 仙人掌绿色按钮:训练技能,并将剩余物品缴纳给训练师。
- 单独点击某个物品:仅缴纳该类型物品给训练师。
- 深度自定义:所有设置、技能、效果和种族均可完全自定义。等级上限理论上可设为 1000,但建议保持在 30 级,除非你熟悉如何相应调整 CSV 文件。
- 种族专精:种族允许玩家专精于特定技能,使其能突破原版等级上限进行训练。
- 人类:锻造、烹饪、耕种
- 精灵:战斗、狩猎
- 矮人:采矿、挖掘
- 侏儒:酿造、手工
- 技能系统:包含 40 多项技能,从 0 级(弱于正常)提升至 30 级(极其熟练)。每项技能包含多种效果,大多数效果在技能 5 级时达到标准水平。技能通过向训练师支付训练成本来提升,成本随等级增加,以鼓励专精。
- 灵活的训练师:训练师可以是几乎任何实体类型(EntityType)。例如,钓鱼训练师可以是一只鱿鱼。
- 游戏内信息查询:技能和效果的详细信息可通过游戏内命令轻松查看。
要求与依赖
命令与权限
所有命令均为基础命令 /DwarfCraft 的子命令,格式为 /DwarfCraft <子命令>。
基础命令
- SkillSheet - 显示你的技能表。
- Info - 显示 DwarfCraft 的通用信息页面。
- Rules - 显示 DwarfCraft 配置中设置的服务器规则。
- SkillInfo - 显示指定玩家特定技能的进度/信息。
- Race - 显示 DwarfCraft 种族 GUI,用于查看玩家种族信息或进行更改。
- EffectInfo - 显示指定玩家特定技能的效果。
- Tutorial - 给予玩家 DwarfCraft 口袋指南。
管理员命令
- Debug - 更改调试级别,数值越小,调试信息越多。
- Reload - 重载 DwarfCraft。
- Race - 允许管理员手动更改玩家的种族。
- Tutorial - 允许管理员给予玩家 DwarfCraft 口袋指南。
- List - 列出服务器上所有训练师。
- SetSkill - 设置指定玩家的指定技能等级。
- Create - 在你所在位置创建一个 DwarfCraft 训练师。
权限节点
dwarfcraft.norm.dwarfcraft- 基础命令权限节点,所有子命令都需要此权限才能工作。dwarfcraft.norm.commandname- 仅用于指定的基础命令。dwarfcraft.norm.race.racename- 用于种族,如果玩家没有此权限,则无法切换至该种族(种族名称需小写)。dwarfcraft.op.commandname- 仅用于指定的管理员命令。
技能分类
工具使用技能
影响工具损耗速度。高级技能可使你从锹、斧、镐中获得多达三倍的使用次数。
[1] Pickaxe Use- 镐[2] Shovel Use- 锹[3] Axe Durability- 斧[6] Fisher Man- 鱼竿耐久度和鱼获数量
采集技能
影响从石头、矿石、泥土、沙、砾石、原木等方块中收集材料的速率。高级技能会掉落多个所需方块,并增加瞬间挖掘的机会。
[11] Excavator- 圆石瞬间挖掘[12] Quarry Worker- 圆石数量[13] Ore Miner- 金、煤、铁数量[14] Exotic Miner- 绿宝石、青金石、钻石、红石数量[17] Nether Miner- 石英、荧石、下界岩数量[21] Sand Digger- 沙数量及瞬间挖掘[22] Gravel Digger- 砾石和燧石数量及瞬间挖掘[23] Dirt Digger- 泥土数量及泥土/草方块瞬间挖掘[31] Lumberjack- 原木数量及瞬间挖掘
农业技能
处理种植小麦或收集其他植物材料的效率。农夫技能也影响锄的耐久度。
[4] Seed Gatherer- 锄耐久度及锄草时种子数量[5] Melon Farmer- 西瓜片数量(来自西瓜块)[6] Fisher Man- 鱼竿耐久度和鱼获数量[41] Wheat Farmer- 收割成熟作物时小麦和种子数量[42] Exotic Farmer- 甘蔗、仙人掌、可可豆数量[43] Vegetable Farmer- 马铃薯和胡萝卜数量[74] Florist- 花和南瓜数量[91] Alchemist- 有时可制作额外药水,并影响下界疣数量[80] Shearer- 剪切哞菇时的蘑菇数量及剪切绵羊时的羊毛数量
制作/熔炼技能
影响在工作台使用标准配方时制作的物品数量。许多制作技能有额外效果。熔炼技能影响熔炼时从熔炉掉落的额外物品数量。
[7] Stone Shaper- 石制工具[8] Smelter- 熔炼金/铁矿石时,可能掉落额外锭和石头[9] Iron Forger- 铁制工具[10] Diamond Forger- 钻石工具[15] Wood Carver- 木制工具[16] Gold Forger- 金制工具[32] Wood Splitter- 木板和木棍[51] Mason- 圆石台阶、石台阶和平滑石台阶[53] Wood Crafter- 梯子、栅栏、门、木台阶[61] Book Maker- 书[62] Brick Maker- 砖块[63] Demolitionist- TNT 及爆炸伤害[65] Rail Worker- 铁轨[66] Baker Man- 面包、南瓜派、曲奇、蛋糕、烤马铃薯[67] Fletcher- 箭[68] Grillardin- 熔炼生肉时,可能掉落额外熟肉[86] Exotic Armour- 金和钻石盔甲[88] Sign Maker- 告示牌[89] Torch Maker- 火把[91] Alchemist- 有时可制作额外药水,并影响下界疣数量
伤害减免技能
除了爆破手减少爆炸伤害外,还有影响火焰、跌落、窒息和熔岩伤害的技能。也有影响盔甲耐久度和制作数量的技能。
[63] Demolitionist- 爆炸伤害[64] Fire Starter- 火焰伤害,打火石耐久度[72] Climbing- 跌落伤害,短距离跌落豁免[83] Scout- 皮革盔甲耐久度、制作数量、弹射物伤害减免[84] Soldier- 铁盔甲耐久度、制作数量
战斗技能
剑士、斧手和弓手技能影响你使用这些武器造成的伤害。剑士技能也有耐久度效果。
[85] Archer- 箭伤害及敌人羽毛/箭掉落[87] Swordsman- 剑伤害及耐久度[101] Axe Swinger- 斧伤害
狩猎技能
允许玩家用剑或弓杀死敌人时收集更多资源。注意,此插件完全移除了以任何其他方式杀死生物的掉落,以防止“自动化刷怪”。
[76] Nether Hunter- 烈焰人、岩浆怪、僵尸猪灵、恶魂[81] Animal Hunter- 猪、牛、羊、鸡[82] Monster Hunter- 苦力怕、骷髅、蜘蛛[85] Archer- 僵尸
探索技能
这些技能有益于与探索、旅行和冒险相关的活动。效果多样,但应能带来更成功的荒野之旅和更有价值的材料。
[71] Sailor- 船行速度及船损毁结果(水手 >15 级可回收船)[73] Survivalist- 从生猪排、生鱼、蘑菇煲中获得的生命值[75] Dungeon Delver- 怪物刷怪笼可能掉落铁、金、钻石、青金石块
其他技能
[99] Noble- 矮人要塞贵族是无用的。DwarfCraft 贵族能更好地挖掘黑曜石,但训练需要数百个鸡蛋。任何收集数百个鸡蛋并整天挖掘黑曜石的玩家都像矮人要塞贵族。
PlaceholderAPI 支持
基础占位符
%dwarfcraft_maxskilllevel%- 显示玩家可将技能提升到的最高等级。%dwarfcraft_racelevellimit%- 显示当玩家种族不专精于某项技能时,可提升到的最高等级。
玩家占位符
%dwarfcraft_playerrace%- 显示玩家的种族。%dwarfcraft_playerlevel%- 显示玩家的等级。
开发者 API
DwarfCraft 的 API 正在逐步完善。如果你通过 Spigot 创建了该插件的对象,应该可以访问所有内容。你也可以查看源代码以获取帮助,你的 IDE 应能提示大多数方法的作用。Javadocs 正在编写中。
事件
目前有六个事件
- DwarfLevelUpEvent - 当玩家提升 DwarfSkill 等级时触发。
- DwarfDepositEvent - 当玩家向训练师缴纳物品以提升 DwarfSkill 时触发。
- DwarfEffectEvent - 当效果触发时触发(例如,当 DwarfCraft 更改生物掉落、合成配方、方块掉落等时)。
- DwarfRaceChangeEvent - 当尝试更改玩家种族时触发(在种族更改保存到数据库之前)。
- DwarfLoadSkillsEvent - 在从 CSV 文件读取所有技能后触发。
- DwarfLoadRacesEvent - 在读取 races.config 文件后触发。
使用示例
public class Companion extends JavaPlugin implements Listener {
private DwarfCraft dwarfcraft;
@Override
public void onEnable() {
PluginManager pm = getServer().getPluginManager();
if (getServer().getPluginManager().getPlugin("DwarfCraft") == null || getServer().getPluginManager().getPlugin("DwarfCraft").isEnabled() == false) {
System.out.println("[Companion] Couldn't find DwarfCraft!");
System.out.println("[Companion] Companion now disabling...");
getServer().getPluginManager().disablePlugin(this);
return;
}
dwarfcraft = (DwarfCraft) pm.getPlugin("DwarfCraft");
System.out.println("[Companion] Hooked into DwarfCraft!");
pm.registerEvents(this, this);
System.out.println("[Companion]" + getDescription().getName() + " version " + getDescription().getVersion() + " is enabled!");
}
public void onPlayerInteract(PlayerInteractEvent event) {
DCPlayer player = dwarfcraft.getDataManager().find(event.getPlayer());
if (event.getAction() == Action.LEFT_CLICK_BLOCK) {
if (player.getRace().equalsIgnoreCase("Dwarf")) {
//DO SOMETHING HERE
}
}
}
}技能创建指南
此部分旨在帮助你基于已有的技能“骨架”创建新技能。首先,技能和效果之间存在关联。技能是训练师教授给玩家的内容,而效果是技能的作用。如果你的技能 ID 为 6,那么你的效果 ID 范围可以是 60 - 69,即技能 6 的效果 0 到效果 9。
Skill.csv 字段说明
- ID:技能 ID
- Name:技能名称
- Item1:升级技能所需的第一个物品 ID
- Item1Base:升级所需的基础数量
- Item1Max:升级技能所需的最大数量
- Item2:升级技能所需的第二个物品 ID
- Item2Base:升级技能所需的基础数量
- Item2Max:升级技能所需的最大数量
- Item3:升级技能所需的第三个物品 ID
- Item3Base:升级技能所需的基础数量
- Item3Max:升级技能所需的最大数量
- Held:掌握该技能的训练师手持物品的 ID
Effects.csv 字段说明
- ID:技能 ID 和效果编号(例如,如果你的技能 ID 是 60,那么你的第一个效果 ID 将是 600)
- BaseValue:效果的基础值(例如,高草丛被破坏时掉落 0.6 个种子)
- LevelIncrease:根据你的等级添加到效果基础值的增量。可以是负值(例如,在工具耐久度中,你不想让工具更快损坏,因此增量为负值)
- LevelIncreaseNovice:不太确定其作用,通常是 LevelIncrease 的较小值或 0
- Min:效果值可以达到的最小值
- Max:效果值可以达到的最大值
- Floor:如果为 true,则对效果值取整(即总是向下取整为整数)
- Exception:如果为 true,则在低技能等级和高技能等级之间,效果值仅使用 ExceptionValue
- ExceptionLow:应用 ExceptionValue 的区间下限
- ExceptionHigh:应用 ExceptionValue 的区间上限
- ExceptionValue:当玩家技能等级在 ExceptionLow 和 ExceptionHigh 区间内时,将替换效果值的值
- NormalLevel:效果的原始等级(例如,破坏石头时掉落 1 个圆石)
- Type:效果的类型(见下方效果类型列表)
- OriginID:效果的方块 ID 或物品 ID。如果类型是 MOBDROP 或 SHEAR,则可以通过 Spigot 的 EntityType.class 中的名称指定生物。如果未指定生物,则应用于掉落 outputID 的所有生物。
- OutputID:方块被破坏或物品被激活后,效果的输出物品 ID
- RequireTool:如果为 true,表示你的技能/效果需要工具来激活(例如,采矿需要镐)
- Tools:如果 RequireTool 为 true,则可以激活效果的工具列表(例如:270 274 257 285 278,仅用空格分隔物品 ID)
效果类型列表
BLOCKDROP- 破坏方块时掉落物品堆MOBDROP- 杀死生物时掉落物品堆SWORDDURABILITY- 剑耐久度PVPDAMAGE- 玩家对玩家伤害PVEDAMAGE- 玩家对实体伤害EXPLOSIONDAMAGE- 爆炸伤害FIREDAMAGE- 火焰伤害FALLDAMAGE- 跌落伤害FALLTHRESHOLD- 未知PLOWDURARBILTY- 锄耐久度TOOLDURABILITY- 通用工具耐久度EAT- 玩家进食时决定获得多少饱食度CRAFT- 制作时决定每个配方制作的数量PLOW- 锄草时掉落物品堆DIGTIME- 与挖掘时间相关BOWATTACK- 玩家用弓攻击时造成的伤害VEHICLEDROP- 船或矿车被破坏时是否掉落VEHICLEMOVE- 载具移动速度或能否移动SPECIAL- 特殊且未知FISH- 玩家用鱼竿钓鱼时,除了鱼之外还可能掉落物品堆RODDURABILITY- 玩家成功钓到鱼时损失的耐久度SMELT- 熔炼后从熔炉掉落的物品数量SHEAR- 剪切动物时掉落的物品数量
技能提交
要提交技能以供添加到 DwarfCraft,只需按照以下简单模板和指定说明操作。你可以提交请求(因为基础技能代码未实现),也可以提交包含你技能的已编辑 .csv 文件。
模板:
- Skill Name:
- Skill Description (Brief):
- Skill.csv link (if not a request):
- Effects.csv link (if not a request):
遵循此模板,我将考虑你的技能,并有望将其添加到官方技能数据库中。如果你有多个要添加或请求的技能,无需发多个帖子,只需列出多个 Skill Name 和 Skill Description 即可。
注意事项
- 问题反馈:请将所有问题发布在