配置事件
通过服务端事件配置PMMO的核心系统
反作弊配置
反作弊系统用于防止通过挂机和重复操作刷取经验
PmmoJS.antiCheese((event) => {event.setAfkCanSubtract(false); // 设置AFK时是否扣除经验event.addAfkSetting(EventType.BREAK) // 添加破坏方块的AFK检测.minTime(600) // 30秒后开始应用惩罚.reduction(0.1) // 每半秒减少10%经验.cooloff(5) // 非AFK时每半秒减少5tick的AFK时间.tolerance(3.0) // AFK检测的距离容差.strictTolerance(true) // 考虑视角移动.build();// 添加重复操作的收益递减设置event.addDiminishingSetting(EventType.KILL) // 击杀实体类型.retention(6000) // 5分钟后重置.reduction(0.1) // 每次重复减少10%.build();// 添加经验获取标准化设置event.addNormalizationSetting(EventType.CRAFT) // 合成物品类型.retention(1200) // 1分钟追踪期.toleranceFlat(50) // 小量经验固定容差.tolerancePercent(0.2) // 大量经验20%容差.build();});
自动数值配置
配置自动化的经验奖励和需求计算
PmmoJS.autoValues((event) => {// 全局设置event.setAutoValuesEnabled(true) // 启用自动计算.setRaritiesModifier(1.5) // 稀有度系数.setHardnessModifier(2.0); // 硬度系数// 经验奖励配置event.addItemXpAward(EventType.CRAFT, "smithing", 25); // 物品合成奖励event.addBlockXpAward(EventType.BREAK, "mining", 50); // 方块破坏奖励event.addEntityXpAward(EventType.KILL, "combat", 100); // 实体击杀奖励// 从自动计算中移除技能event.removeItemXpSkill(EventType.CRAFT, "agility"); // 移除敏捷技能// 工具特定覆盖event.setAxeOverride({ // 斧头工具覆盖woodcutting: 15, // 伐木技能foraging: 5, // 采集技能});// 需求配置event.addItemReq(ReqType.WEAR, "defense", 10); // 穿戴物品需求event.addBlockReq(ReqType.BREAK, "mining", 5); // 破坏方块需求});
被动加成配置
定义玩家在特定技能等级解锁的被动效果 更多信息
PmmoJS.perksConfig((event) => {// 添加随敏捷等级提升的跳跃增强event.addPerk(EventType.JUMPED, "pmmo:jump_boost", "agility").asJumpBoostPerk() // 跳跃增强类型.withMinLevel(10) // 最低等级要求.withBase(0.05) // 基础加成.withPerLevel(0.01) // 每级加成.withMaxBoost(0.5) // 最大加成.build();// 为特定武器添加伤害加成event.addPerk(EventType.DEAL_DAMAGE, "pmmo:damage_boost", "combat").asDamageBoostPerk() // 伤害增强类型.forWeapons("minecraft:sword", "minecraft:axe") // 适用武器.withBase(0.1) // 基础加成.withPerLevel(0.01) // 每级加成.withMaxBoost(1.0) // 最大加成.withCooldown(100) // 冷却时间.build();// 添加药水效果特权event.addPerk(EventType.KILL, "pmmo:regen_effect", "endurance").asEffectPerk() // 药水效果类型.withEffect("minecraft:regeneration") // 再生效果.withDuration(200) // 持续时间.withModifier(0) // 效果等级.withMinLevel(25) // 最低等级.withChance(0.15) // 触发概率.build();// 清除特定类型的所有特权event.clearPerks(EventType.BLOCK_PLACE); // 清除方块放置相关特权// 移除特定特权类型event.removePerkType("pmmo:fireworks"); // 移除烟花特效});
技能配置
定义技能和技能组
PmmoJS.skillsConfig((event) => {event.addSkill("test") // 添加测试技能.withColor(0xa52a2a) // 颜色代码.withIcon(new ResourceLocation("pmmo", "textures/skills/archery.png")) // 图标路径.withIconSize(32) // 图标尺寸.withMaxLevel(100) // 最大等级.build();event.addSkill("combat") // 添加战斗技能组.withColor(0xff0000) // 红色.withUseTotal(true) // 使用总等级.setGroupOf({ // 子技能组成swordsmanship: 0.6, // 剑术占比60%archery: 0.4, // 箭术占比40%}).build();// 移除默认技能event.removeDefaultSkill("swiming"); // 移除游泳技能// 修改现有技能const test = SKillHelper.getSkill("test"); // 获取测试技能event.removeDefaultSkill("test"); // 移除原版测试技能event.addSkill("test") // 重新添加修改版.withAfkExempt(test.afkExempt()) // 继承AFK豁免.withColor(test.color()) // 继承颜色.withUseTotal(test.useTotalLevels()) // 继承总等级设置.withIcon(test.icon()) // 继承图标.withIconSize(test.iconSize()) // 继承图标尺寸.withDisplayName(test.displayGroupName()) // 继承显示名称.withMaxLevel(test.maxLevel()); // 继承最大等级});
服务端配置
修改核心服务端设置
PmmoJS.serverConfig((event) => {// 基础游戏设置event.setCreativeReach(15.0) // 创造模式交互距离.setSalvageBlock("minecraft:anvil") // 设置分解台方块.setTreasureEnabled(true); // 启用宝藏系统// 等级系统设置event.setMaxLevel(100) // 最大等级.setLossOnDeath(0.1) // 死亡经验损失比例.setLoseLevelsOnDeath(false) // 是否降级.setUseExponentialFormula(true); // 使用指数公式// 经验计算公式参数event.setExponentialBaseXp(100) // 基础经验值.setExponentialPowerBase(1.05) // 指数基数.setExponentialLevelMod(1.15); // 等级修正系数// 需求开关设置event.setReqEnabled(ReqType.BREAK, true) // 启用破坏需求.setReqEnabled(ReqType.PLACE, false); // 禁用放置需求// 运动经验设置event.addJumpXp("agility", 0.5) // 跳跃经验.addSprintJumpXp("agility", 1.0) // 冲刺跳跃经验.addSwimmingXp("swimming", 0.2); // 游泳经验// 战斗经验设置event.addDealDamageXp("minecraft:player", "combat", 5) // 对玩家造成伤害.addReceiveDamageXp("minecraft:fall", "endurance", 2); // 承受跌落伤害// 矿脉系统设置event.setVeinEnabled(true).setBaseChargeRate(0.5).setBaseChargeCap(1000); // 启用矿脉/基础充能率/容量});
全局配置
定义数据访问的全局路径和常量
PmmoJS.globalsConfig((event) => {event.addPath("durability", "Damage"); // 添加耐久度数据路径event.addConstant("MAX_SKILL_LEVEL", "100"); // 添加最大等级常量event.remove("unused_path"); // 移除无用路径event.removeConstant("OLD_CONSTANT"); // 移除旧常量});
警告!
配置事件在服务端启动时应用,修改后也无需重启服务器