AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
>[danger] 这个是基于[简单强化](%E7%AE%80%E5%8D%95%E5%BC%BA%E5%8C%96.md)和[界面锁定](%E7%95%8C%E9%9D%A2%E9%94%81%E5%AE%9A.md)的拓展延迟强化 如果报错就更新最新的[PxTools1.12.2+](../../../../PxTools) ``` title: "装备强化(延迟2.5秒)" size: 9 action: close: |- //关闭窗口,如果调度任务存在,就给取消掉,不让他定时执行了 BukkitTask task = getTemp("task"); if(task != null) task.cancel(); slots: '0': type: empty action: #boolean before(AdapterPlayer player,AdapterItemStack item,AdapterItemStack cursor) before: |- boolean lock = this.getTemp("lock"); if(lock) { player.sendOldMessage("正在强化中..请稍后"); return false; } //如果指针物品是空气,说明是拿走原本的物品,返回true不取消事件 if(cursor.isAir()) return true; //QuickTools是一个快捷工具类,由原生java编写,默认导入(无需手动导入),方法都是静态方法, 可直接类名.方法名调用 //要获取原版ItemStack可使用 ItemStack itemStack = cursor.getObject(); //这里判断是不是一个装备,是装备可以进行交换 if(QuickTools.isEquip(cursor)) return true; player.sendOldMessage("这里只能放装备"); //不是装备提醒玩家 //this.getPlayer().sendOldMessage("这里只能放装备"); //或者这样也一样 return false; #void after(AdapterPlayer player,AdapterItemStack item) after: |- //为空气表示拿走了物品 if(item.isAir()){ AdapterItemStack 开始按钮 = this.getButton(3); //这里具有ExtendGui(当前窗口)环境,可以调用ExtendGui类的方法 开始按钮.setDisplayName("&7开始"); }else{ //不是空气表示放入新的物品 AdapterItemStack 开始按钮 = this.getButton(3); //这里具有ExtendGui环境,可以调用ExtendGui类的方法 开始按钮.setDisplayName("&6已经放入了装备"); //this.setButton(3,开始按钮); //有些操作不生效时,可以利用这个方法再重新设置一下,如操作了NBT等 } '1': type: empty action: before: |- boolean lock = this.getTemp("lock"); if(lock) { player.sendOldMessage("正在强化中..请稍后"); return false; } //指针物品为空气或者是一个pr道具则允许操作 if(cursor.isAir() || QuickTools.isItem(cursor)) return true; player.sendOldMessage("这里只能放强化道具"); return false; '2': type: empty action: before: |- boolean lock = this.getTemp("lock"); if(lock) { player.sendOldMessage("正在强化中..请稍后"); return false; } if(cursor.isAir() || QuickTools.isItem(cursor)) return true; player.sendOldMessage("这里只能放保护券或提升概率道具"); return false; '3': type: button def: type: stone name: "&7开始" lore: - '&7左键点击开始强化' action: #void left(AdapterPlayer player,AdapterItemStack item) left: |- boolean lock = this.getTemp("lock"); if(lock) { player.sendOldMessage("正在强化中..请稍后"); return false; } AdapterItemStack 装备物品 = this.get(0); AdapterItemStack 强化物品 = get(1); AdapterItemStack 保护券或增加概率券 = get(2); if(装备物品.isAir()){ player.sendOldMessage("你还未放入要强化装备呢"); return; } if(强化物品.isAir()){ player.sendOldMessage("你还未放入强化道具呢"); return; } ExtendGui gui = this;//先将this环境做为变量 player.sendOldMessage("开始强化"); //正式环境可以删除 this.setTemp("lock",true); import com.pxpmc.itemextend.PxItemExtend; BukkitTask bukkitTask = Bukkit.getScheduler().runTaskLater(PxItemExtend.inst(), new Runnable() { public void run() { EquipInter 装备物品对象 = QuickTools.toEquip(装备物品); ItemInter 强化物品对象 = QuickTools.toItem(强化物品); int 当前强化等级 = 装备物品对象.getData("streng"); player.sendOldMessage("当前装备强化等级为: " + 当前强化等级); //正式环境可以删除 强化物品.setAmount(强化物品.getAmount()-1); gui.set(1,强化物品); int 下级强化等级 = 当前强化等级+1; double 成功概率 = (1-下级强化等级*0.05);//计算好成功概率,也可以利用玩家属性去修正 if(Math.random() < 成功概率){ 装备物品对象.setData("streng",下级强化等级); //设置强化为 当前+1 player.sendOldMessage("恭喜,强化成功为 " + 下级强化等级); if(下级强化等级 == 3){ Attr 随机属性 = QuickTools.createAttr("攻击",100.0,150.0); ExtendData 装备扩展数据 = 装备物品对象.getData("extend"); 装备扩展数据.set("强化随机","3",随机属性);//扩展内容可以添加 Attr 类型的数据 player.sendOldMessage("由于强化+3 额外添加了一条强化属性: " + 随机属性.getId()+ ": " + 随机属性.getMin() + "-"+随机属性.getMax()); }else if(下级强化等级 == 6){ Attr 随机属性 = QuickTools.createAttr("攻击",150.0,250.0); ExtendData 装备扩展数据 = 装备物品对象.getData("extend"); 装备扩展数据.set("强化随机","6",随机属性); player.sendOldMessage("由于强化+6 额外添加了一条强化属性: " + 随机属性.getId()+ ": " + 随机属性.getMin() + "-"+随机属性.getMax()); }else if(下级强化等级 == 9){ Attr 随机属性 = QuickTools.createAttr("攻击",300.0,500.0); ExtendData 装备扩展数据 = 装备物品对象.getData("extend"); 装备扩展数据.set("强化随机","9",随机属性); player.sendOldMessage("由于强化+9 额外添加了一条强化属性: " + 随机属性.getId()+ ": " + 随机属性.getMin() + "-"+随机属性.getMax()); } 装备物品对象.render();//重新渲染一下 gui.set(0,装备物品对象.getItemStack()); //设置到窗口内 }else{ player.sendOldMessage("很抱歉,强化失败了"); } gui.execute(true); //清空缓存物品,并将缓存物品设置到窗口内(只要set了物品在结束时都需要提交一下才会更新物品) gui.setTemp("lock",false); gui.setTemp("task",(Object) null); } }, 50L); //这里把调度任务添加到临时里面 this.setTemp("task",bukkitTask); '4-8': type: button def: type: paper name: "&7填充物" lore: [ ] unbreakable: true hide: 63 ```