初始版

This commit is contained in:
yaohunya 2025-07-12 00:00:55 +08:00
parent be4cd7ac7f
commit a6a377857a
10 changed files with 660 additions and 6 deletions

Binary file not shown.

View File

@ -1,8 +1,14 @@
package com.yaohun.levelreward; package com.yaohun.levelreward;
import com.yaohun.levelreward.config.Config;
import com.yaohun.levelreward.data.PlayerData;
import com.yaohun.levelreward.gui.RewardGui;
import com.yaohun.levelreward.manage.PlayerManager; import com.yaohun.levelreward.manage.PlayerManager;
import com.yaohun.levelreward.util.ToolsUtil;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
public class LevelReward extends JavaPlugin { public class LevelReward extends JavaPlugin {
@ -14,6 +20,7 @@ public class LevelReward extends JavaPlugin {
@Override @Override
public void onEnable() { public void onEnable() {
instance = this; instance = this;
Config.reloadConfig(this);
playerManager = new PlayerManager(); playerManager = new PlayerManager();
} }
@ -25,6 +32,7 @@ public class LevelReward extends JavaPlugin {
@Override @Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if("open".equalsIgnoreCase(args[0])){ if("open".equalsIgnoreCase(args[0])){
RewardGui.OpenGui((Player) sender);
return true; return true;
} }
if(!sender.isOp()) { if(!sender.isOp()) {
@ -33,16 +41,24 @@ public class LevelReward extends JavaPlugin {
if (args.length == 0) { if (args.length == 0) {
sender.sendMessage(""); sender.sendMessage("");
sender.sendMessage("§e------- ======= §6等级成长礼包 §e======= -------"); sender.sendMessage("§e------- ======= §6等级成长礼包 §e======= -------");
sender.sendMessage("§2/"+label+" add §e[方案] §2<玩家> §f- §2增加礼包"); sender.sendMessage("§2/"+label+" open §f- §2打开界面");
sender.sendMessage("§2/"+label+" reset §e[方案] §2<玩家> §f- §2重置礼包"); sender.sendMessage("§2/"+label+" skull §f- §2查看头颅码");
sender.sendMessage("§2/"+label+" show §e[方案] §f- §2查看礼包内容");
sender.sendMessage("§2/"+label+" edit §e[方案] §f- §2设置礼包内容");
sender.sendMessage("§2/"+label+" list §f- §2查看礼包方案");
sender.sendMessage("§2/"+label+" reload §f- §2重载配置文件"); sender.sendMessage("§2/"+label+" reload §f- §2重载配置文件");
sender.sendMessage("§e------- ======= §6等级成长礼包 §e======= -------"); sender.sendMessage("§e------- ======= §6等级成长礼包 §e======= -------");
sender.sendMessage(""); sender.sendMessage("");
return true; return true;
} }
if("skull".equalsIgnoreCase(args[0])){
Player player = (Player) sender;
ItemStack stack = player.getInventory().getItemInMainHand();
sender.sendMessage("[查询头颅] Base64ID: "+ToolsUtil.getHandSkullBase64(stack));
return true;
}
if("reload".equalsIgnoreCase(args[0])){
Config.reloadConfig(this);
sender.sendMessage("[等级礼包] 配置文件已重载.");
return true;
}
return false; return false;
} }

View File

@ -0,0 +1,70 @@
package com.yaohun.levelreward.config;
import com.yaohun.levelreward.LevelReward;
import com.yaohun.levelreward.data.RewardData;
import me.Demon.DemonPlugin.DemonAPI;
import me.Demon.DemonPlugin.data.GuiItemData;
import me.Demon.DemonPlugin.data.LangData;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class Config {
public static LangData langData;
private static HashMap<String, GuiItemData> guiItemDataMap = new HashMap<>();
private static List<RewardData> rewardDataList = new ArrayList<>();
public static void reloadConfig(LevelReward plugin) {
// 调用了DemonAPI中的LangData
// 需要在AuLangs目录中创建一个 LevelReward.yml 文件存语言配置
langData = DemonAPI.getLangData("LevelReward");
plugin.reloadConfig();
plugin.saveConfig();
FileConfiguration config = plugin.getConfig();
loadGuiItemData(config);
loadRewardSettings(config);
}
private static void loadRewardSettings(FileConfiguration config){
rewardDataList.clear();
ConfigurationSection section = config.getConfigurationSection("RewardSettings");
if(section == null) {return;}
for (String rewardKey : section.getKeys(false)){
rewardDataList.add(new RewardData(rewardKey,section));
}
}
private static void loadGuiItemData(FileConfiguration configuration){
guiItemDataMap.clear();
ConfigurationSection section = configuration.getConfigurationSection("GuiItemData");
if(section == null){return;}
for (String itemKey : section.getKeys(false)){
guiItemDataMap.put(itemKey,new GuiItemData(itemKey,section));
}
}
public static ItemStack getItemStack(String itemKey) {
if(guiItemDataMap.containsKey(itemKey)){
return guiItemDataMap.get(itemKey).getItemStack().clone();
}
return DemonAPI.getErrItems();
}
public static List<RewardData> getRewardDataList() {
return rewardDataList;
}
public static RewardData getRewardData(String rewardKey) {
for (RewardData rewardData : rewardDataList){
if(rewardData.getRewardKey().equals(rewardKey)){
return rewardData;
}
}
return null;
}
}

View File

@ -19,6 +19,8 @@ public class PlayerData {
private final File file; private final File file;
private final FileConfiguration configuration; private final FileConfiguration configuration;
private final String playerName;
/** /**
* 存储玩家奖励的列表 * 存储玩家奖励的列表
*/ */
@ -30,6 +32,7 @@ public class PlayerData {
* @param playerName 玩家名称用于标识和加载对应的玩家数据文件 * @param playerName 玩家名称用于标识和加载对应的玩家数据文件
*/ */
public PlayerData(String playerName){ public PlayerData(String playerName){
this.playerName = playerName;
// 初始化文件路径 // 初始化文件路径
this.file = new File("plugins/AuData/LevelReward", playerName + ".yml"); this.file = new File("plugins/AuData/LevelReward", playerName + ".yml");
// 检查并创建玩家数据文件的父目录 // 检查并创建玩家数据文件的父目录
@ -43,6 +46,10 @@ public class PlayerData {
this.rewardList = this.configuration.getStringList("RewardList"); this.rewardList = this.configuration.getStringList("RewardList");
} }
public String getPlayerName() {
return playerName;
}
/** /**
* 保存玩家数据到文件 * 保存玩家数据到文件
* 将玩家的奖励列表保存到配置文件中并写入磁盘 * 将玩家的奖励列表保存到配置文件中并写入磁盘

View File

@ -0,0 +1,62 @@
package com.yaohun.levelreward.data;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import java.util.List;
public class RewardData {
private String rewardKey;
private int slot;
private String base64;
private int needLevel;
private List<String> rewardList;
private List<String> commandList;
public RewardData(String rewardKey, ConfigurationSection section){
this.rewardKey = rewardKey;
this.slot = section.getInt(rewardKey+".slot");
this.needLevel = section.getInt(rewardKey+".level");
this.base64 = section.getString(rewardKey+".base64","default");
this.rewardList = section.getStringList(rewardKey+".reward");
this.commandList = section.getStringList(rewardKey+".commands");
}
public String getRewardKey() {
return rewardKey;
}
public int getSlot() {
return slot;
}
public String getBase64() {
return base64;
}
public List<String> getRewardList() {
return rewardList;
}
public int getNeedLevel() {
return needLevel;
}
public void carryOutCommands(Player player){
String playerName = player.getName();
for(String command : commandList) {
if (command.contains("msg:")) {
player.sendMessage(command.replace("msg:", ""));
} else {
command = command.replace("%p%", playerName);
player.performCommand(command);
}
}
}
}

View File

@ -1,7 +1,41 @@
package com.yaohun.levelreward.gui; package com.yaohun.levelreward.gui;
import com.yaohun.levelreward.config.Config;
import com.yaohun.levelreward.data.RewardData;
import com.yaohun.levelreward.util.MessageUtil;
import com.yaohun.levelreward.util.StackUtil;
import org.bukkit.Bukkit;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.inventory.Inventory;
public class RewardGui implements Listener { public class RewardGui {
private static String invTitle = Config.langData.getMessage("invTitle");
public static boolean isTimeOut60Day(Player player){
long firstPlayed = player.getFirstPlayed();
if(firstPlayed == 0){
return false;
}
long nowTime = System.currentTimeMillis();
long days = (nowTime - firstPlayed) / (1000 * 60 * 60 * 24);
if(days < 60){
return false;
}
return true;
}
public static void OpenGui(Player player) {
// 获取玩家入服时间 并判断是否已超过60天
if(isTimeOut60Day(player)){
MessageUtil.sendMessage(player,"timeOutDay", Sound.ENTITY_BLAZE_DEATH);
return;
}
Inventory inv = Bukkit.createInventory(null,27, invTitle);
for (RewardData rewardData : Config.getRewardDataList()){
inv.setItem(rewardData.getSlot(), StackUtil.getGiftPack(player, rewardData));
}
player.openInventory(inv);
}
} }

View File

@ -0,0 +1,41 @@
package com.yaohun.levelreward.util;
import com.yaohun.levelreward.config.Config;
import org.bukkit.Sound;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class MessageUtil {
public static void sendMessage(CommandSender sender, String message) {
if(sender instanceof Player){
Player player = (Player) sender;
player.sendMessage(message);
} else {
sender.sendMessage(message);
}
}
public static void sendMessage(CommandSender sender, String message, Sound sound) {
if(sender instanceof Player){
Player player = (Player) sender;
player.sendMessage(message);
player.playSound(player.getLocation(), sound, 0.5f, 1.2f);
} else {
sender.sendMessage(message);
}
}
public static void sendMessageKey(CommandSender sender, String langKey, Sound sound) {
String message = Config.langData.getMessage(langKey);
if(sender instanceof Player){
Player player = (Player) sender;
player.sendMessage(message);
player.playSound(player.getLocation(), sound, 0.5f, 1.2f);
} else {
sender.sendMessage(message);
}
}
}

View File

@ -0,0 +1,58 @@
package com.yaohun.levelreward.util;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import com.yaohun.levelreward.config.Config;
import com.yaohun.levelreward.data.PlayerData;
import com.yaohun.levelreward.data.RewardData;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.SkullMeta;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class StackUtil {
public static ItemStack getGiftPack(Player player, RewardData rewardData){
ItemStack stack = Config.getItemStack("LevelGiftPack");
if(rewardData.getRewardKey().contains("kejin")){
stack = Config.getItemStack("PayGiftPack");
}
stack.setType(Material.SKULL_ITEM);
stack.setDurability((short) 3);
SkullMeta meta = (SkullMeta) stack.getItemMeta();
GameProfile profile = new GameProfile(UUID.randomUUID(), null);
String base64 = rewardData.getBase64();
profile.getProperties().put("textures", new Property("textures", base64));
try {
Field profileField = meta.getClass().getDeclaredField("profile");
profileField.setAccessible(true);
profileField.set(meta, profile);
} catch (Exception e) {
e.printStackTrace();
}
String itemName = meta.getDisplayName();
meta.setDisplayName(itemName.replace("{level}",String.valueOf(rewardData.getNeedLevel())));
List<String> lore = meta.getLore();
List<String> newLore = new ArrayList<>();
for (String line : lore) {
if (line.contains("{name}")) {
newLore.add(line.replace("{name}", player.getName()));
} else if (line.contains("{player_level}")) {
newLore.add(line.replace("{player_level}", String.valueOf(player.getLevel())));
} else if (line.contains("{rewardLore}")) {
newLore.addAll(rewardData.getRewardList());
} else {
newLore.add(line);
}
}
meta.setLore(newLore);
stack.setItemMeta(meta);
return stack;
}
}

View File

@ -0,0 +1,40 @@
package com.yaohun.levelreward.util;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import me.Demon.DemonPlugin.DemonAPI;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import java.lang.reflect.Field;
public class ToolsUtil {
public static String getHandSkullBase64(ItemStack stack){
if(DemonAPI.itemIsNull(stack) || stack.getType() != Material.SKULL_ITEM){
return "";
}
if(!(stack.getItemMeta() instanceof SkullMeta)){
return "";
}
SkullMeta meta = (SkullMeta) stack.getItemMeta();
try {
Field profileField = meta.getClass().getDeclaredField("profile");
profileField.setAccessible(true);
GameProfile profile = (GameProfile) profileField.get(meta);
if (profile == null) {
return "";
}
for (Property prop : profile.getProperties().get("textures")) {
String base64 = prop.getValue();
System.out.println("[HeadBase64] 读取头颅皮肤:\n" + base64);
return base64;
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}

View File

@ -0,0 +1,326 @@
GuiItemData:
LevelGiftPack:
Material: SKULL_ITEM
DisplayName: "§e萌新助力宝箱 §7[§b{level}§7]"
Lore:
- "§A§L✔§7点击领取奖励"
- "§A§L★§7玩家名称: §d{name}"
- "§c§l★§7当前等级: §dLv.{player_level}"
- "§7§l★§7奖励如下:"
- "§7---------------------"
- "{rewardLore}"
- "§7---------------------"
- "§6PS:领取前请确认背包空间是否充足!"
PayGiftPack:
Material: SKULL_ITEM
DisplayName: "§e土豪助力宝箱 §7[§b80§7]"
Lore:
- "§A§L✔§7点击领取奖励"
- "§A§L★§7玩家名称: §d{name}"
- "§c§l★§7累计充值: §b1288软妹币"
- "§e§l★§7当前累计: §b{coins}软妹币"
- "§7§l★§7奖励如下:"
- "§7---------------------"
- "{rewardLore}"
- "§7---------------------"
- "§6PS:领取前请确认背包空间是否充足!"
RewardSettings:
expup_15:
slot: 10
level: 15
base64: xxxxxxxxxxxxxxxxxxxxxxxxx
reward:
- §71. §7§l★§71 §65000金币
- §72. §7§l★§75 §e百年灵环
- §73. §7§l★§73 §d千年灵环
- §74. §7§l★§72 §e学院的认可
- §75. §7§l★§732 §f[§6食物§f]§d粉汤圆
- §76. §7§l★§73 §f[§6碎片§f]§e暴食娃娃
- §77. §7§l★§75 §f[§a繁花§f]§e灵环抽奖钥匙
commands:
- eco give %p% 5000
- ditem give 学院的认可 2 %p%
- ditem give 食物_粉汤圆 32 %p%
- ditem give 暴食娃娃碎片 3 %p%
- dgroupcmd %p% 随机百年灵环 5
- dgroupcmd %p% 随机千年灵环 3
- ditem give 魂环抽奖箱钥匙 5 %p%
- bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.15]&a萌新助力礼包
- msg:&f[&c消息&f] &a成功领取 &e&lLv.15 &a萌新助力礼包。
expup_25:
slot: 11
level: 25
base64: xxxxxxxxxxxxxxxxxxxxxxxxx
reward:
- §71. §7§l★§71 §610000金币
- §72. §7§l★§74 §d千年灵环
- §73. §7§l★§72 §7万年灵环
- §74. §7§l★§75 §e学院的认可
- §75. §7§l★§71 §2暗器·蛇蛊毒镖
- §76. §7§l★§732 §f[§6食物§f]§d粉汤圆
- §77. §7§l★§71 §d经验+200%§f(持续30分钟)
- §78. §7§l★§73 §f[§6碎片§f]§e暴食娃娃
- §79. §7§l★§75 §f[§a繁花§f]§e灵环抽奖钥匙
commands:
- eco give %p% 10000
- ditem give 学院的认可 5 %p%
- auforge 暗器_蛇蛊毒镖 %p%
- ditem give 食物_粉汤圆 32 %p%
- ditem give 暴食娃娃碎片 3 %p%
- dpotion add %p% 200 30
- dgroupcmd %p% 随机千年灵环 4
- dgroupcmd %p% 随机万年灵环 2
- ditem give 魂环抽奖箱钥匙 5 %p%
- bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.25]&a萌新助力礼包
- msg:&f[&c消息&f] &a成功领取 &e&lLv.25 &a萌新助力礼包。
expup_35:
slot: 12
level: 35
base64: xxxxxxxxxxxxxxxxxxxxxxxxx
reward:
- §71. §7§l★§71 §615800金币
- §72. §7§l★§76 §d千年灵环
- §73. §7§l★§72 §7万年灵环
- §74. §7§l★§78 §e学院的认可
- §75. §7§l★§71 §2暗器·蛇蛊毒镖
- §76. §7§l★§732 §f[§6食物§f]§d粉汤圆
- §77. §7§l★§71 §d经验+200%§f(持续30分钟)
- §78. §7§l★§73 §f[§6碎片§f]§e暴食娃娃
- §79. §7§l★§710 §f[§a繁花§f]§e灵环抽奖钥匙
commands:
- eco give %p% 15800
- ditem give 学院的认可 8 %p%
- auforge 暗器_蛇蛊毒镖 %p%
- ditem give 食物_粉汤圆 32 %p%
- ditem give 暴食娃娃碎片 3 %p%
- dpotion add %p% 200 30
- dgroupcmd %p% 随机千年灵环 6
- dgroupcmd %p% 随机万年灵环 2
- ditem give 魂环抽奖箱钥匙 10 %p%
- bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.35]&a萌新助力礼包
- msg:&f[&c消息&f] &a成功领取 &e&lLv.35 &a萌新助力礼包。
expup_45:
slot: 13
level: 45
base64: xxxxxxxxxxxxxxxxxxxxxxxxx
reward:
- §71. §7§l★§71 §620800金币
- §72. §7§l★§78 §d千年灵环
- §73. §7§l★§73 §7万年灵环
- §74. §7§l★§78 §e学院的认可
- §75. §7§l★§78 §b天外灵玉
- §76. §7§l★§71 §f暗器·锻钢飞刀
- §77. §7§l★§732 §f[§6食物§f]§d粉汤圆
- §78. §7§l★§71 §d经验+200%§f(持续30分钟)
- §79. §7§l★§73 §f[§6碎片§f]§e暴食娃娃
- §710. §7§l★§710 §f[§a繁花§f]§e灵环抽奖钥匙
commands:
- eco give %p% 20800
- ditem give 学院的认可 8 %p%
- ditem give 天外灵玉 8 %p%
- auforge 暗器_锻钢飞刀 %p%
- ditem give 食物_粉汤圆 32 %p%
- ditem give 暴食娃娃碎片 3 %p%
- dpotion add %p% 200 30
- dgroupcmd %p% 随机千年灵环 8
- dgroupcmd %p% 随机万年灵环 3
- ditem give 魂环抽奖箱钥匙 10 %p%
- bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.45]&a萌新助力礼包
- msg:&f[&c消息&f] &a成功领取 &e&lLv.45 &a萌新助力礼包。
expup_55:
slot: 14
level: 55
base64: xxxxxxxxxxxxxxxxxxxxxxxxx
reward:
- §71. §7§l★§71 §625800金币
- §72. §7§l★§78 §d千年灵环
- §73. §7§l★§74 §7万年灵环
- §74. §7§l★§76 §c赤心炼狱珠
- §75. §7§l★§76 §b玄玉冰心珠
- §76. §7§l★§71 §f暗器·锻钢飞刀
- §77. §7§l★§732 §f[§6食物§f]§d粉汤圆
- §78. §7§l★§71 §d经验+300%§f(持续30分钟)
- §79. §7§l★§73 §f[§6碎片§f]§e暴食娃娃
- §710. §7§l★§715 §f[§a繁花§f]§e灵环抽奖钥匙
commands:
- eco give %p% 25800
- ditem give 赤心炼狱珠 6 %p%
- ditem give 玄玉冰心珠 6 %p%
- auforge 暗器_锻钢飞刀 %p%
- ditem give 食物_粉汤圆 32 %p%
- ditem give 暴食娃娃碎片 3 %p%
- dpotion add %p% 300 30
- dgroupcmd %p% 随机千年灵环 8
- dgroupcmd %p% 随机万年灵环 4
- ditem give 魂环抽奖箱钥匙 15 %p%
- bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.55]&a萌新助力礼包
- msg:&f[&c消息&f] &a成功领取 &e&lLv.55 &a萌新助力礼包。
expup_65:
slot: 15
level: 65
base64: xxxxxxxxxxxxxxxxxxxxxxxxx
reward:
- §71. §7§l★§71 §629800金币
- §72. §7§l★§712 §d千年灵环
- §73. §7§l★§76 §c异变§d千年灵环
- §74. §7§l★§76 §7万年灵环
- §75. §7§l★§78 §b天外灵玉
- §76. §7§l★§78 §c杀怒之石
- §77. §7§l★§71 §c暗器·赤心回旋镖
- §78. §7§l★§71 §d经验+300%§f(持续30分钟)
- §79. §7§l★§73 §f[§6碎片§f]§e暴食娃娃
- §710. §7§l★§715 §f[§a繁花§f]§e灵环抽奖钥匙
commands:
- eco give %p% 29800
- ditem give 天外灵玉 8 %p%
- ditem give 杀怒之石 8 %p%
- auforge 暗器_赤心回旋镖 %p%
- ditem give 食物_粉汤圆 32 %p%
- ditem give 暴食娃娃碎片 3 %p%
- dpotion add %p% 300 30
- dskills stone 1 %p%
- dgroupcmd %p% 随机异变千年灵环 6
- dgroupcmd %p% 随机万年灵环 6
- dgroupcmd %p% 随机千年灵环 12
- ditem give 魂环抽奖箱钥匙 15 %p%
- bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.65]&a萌新助力礼包
- msg:&f[&c消息&f] &a成功领取 &e&lLv.65 &a萌新助力礼包。
expup_75:
slot: 16
level: 75
base64: xxxxxxxxxxxxxxxxxxxxxxxxx
reward:
- §71. §7§l★§71 §636800金币
- §72. §7§l★§71 §d40点券
- §73. §7§l★§79 §c异变§d千年灵环
- §74. §7§l★§76 §7万年灵环
- §75. §7§l★§72 §c异变灵环
- §76. §7§l★§710 §b天外灵玉
- §77. §7§l★§710 §c杀怒之石
- §78. §7§l★§71 §c暗器·赤心回旋镖
- §79. §7§l★§71 §d经验+300%§f(持续30分钟)
- §710. §7§l★§720 §f[§a繁花§f]§e灵环抽奖钥匙
- §711. §7§l★§71 §c§l十万年巨兽泰坦灵环
commands:
- eco give %p% 36800
- points give %p% 40
- dhhqc give 十万年_巨兽泰坦灵环 1 %p% true
- ditem give 天外灵玉 10 %p%
- ditem give 杀怒之石 10 %p%
- auforge 暗器_赤心回旋镖 %p%
- dpotion add %p% 300 30
- dgroupcmd %p% 随机异变灵环 2
- dgroupcmd %p% 随机万年灵环 6
- dgroupcmd %p% 随机异变千年灵环 9
- ditem give 魂环抽奖箱钥匙 20 %p%
- bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.75]&a萌新助力礼包
- msg:&f[&c消息&f] &a成功领取 &e&lLv.75 &a萌新助力礼包。
expup_80:
slot: 20
level: 80
base64: xxxxxxxxxxxxxxxxxxxxxxxxx
reward:
- §71. §7§l★§71 §642800金币
- §72. §7§l★§71 §d80点券
- §73. §7§l★§76 §7万年灵环
- §74. §7§l★§72 §c异变灵环
- §75. §7§l★§76 §e冰火灵石
- §76. §7§l★§76 §b灵环精片
- §77. §7§l★§71 §e超级灵环抽奖钥匙
- §78. §7§l★§71 §d经验+300%§f(持续30分钟)
- §79. §7§l★§720 §f[§a繁花§f]§e灵环抽奖钥匙
- §710. §7§l★§71 §c§l十万年巨兽泰坦灵环
commands:
- eco give %p% 42800
- points give %p% 80
- dhhqc give 十万年_巨兽泰坦灵环 1 %p% true
- ditem give 冰火灵石 6 %p%
- ditem give 灵环精片 6 %p%
- ditem give 超级魂环抽奖箱钥匙 1 %p%
- dpotion add %p% 300 30
- dgroupcmd %p% 随机异变灵环 2
- dgroupcmd %p% 随机万年灵环 6
- ditem give 魂环抽奖箱钥匙 20 %p%
- bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.80]&a萌新助力礼包
- msg:&f[&c消息&f] &a成功领取 &e&lLv.80 &a萌新助力礼包。
expup_85:
slot: 22
level: 85
base64: xxxxxxxxxxxxxxxxxxxxxxxxx
reward:
- §71. §7§l★§71 §658800金币
- §72. §7§l★§71 §d100点券
- §73. §7§l★§76 §7万年灵环
- §74. §7§l★§74 §c异变灵环
- §75. §7§l★§78 §e冰火灵石
- §76. §7§l★§78 §b灵环精片
- §77. §7§l★§72 §e超级灵环抽奖钥匙
- §78. §7§l★§71 §d经验+400%§f(持续30分钟)
- §79. §7§l★§71 §c§l十万年巨兽泰坦灵环
- §710. §7§l★§710 §f[§a繁花§f]§e超级灵环钥匙
commands:
- eco give %p% 58800
- points give %p% 100
- dhhqc give 十万年_巨兽泰坦灵环 1 %p% true
- ditem give 冰火灵石 8 %p%
- ditem give 灵环精片 8 %p%
- dpotion add %p% 400 30
- dgroupcmd %p% 随机万年灵环 6
- dgroupcmd %p% 随机异变灵环 4
- ditem give 超级魂环抽奖箱钥匙 10 %p%
- bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.85]&a萌新助力礼包
- msg:&f[&c消息&f] &a成功领取 &e&lLv.85 &a萌新助力礼包。
expup_90:
slot: 24
level: 90
base64: xxxxxxxxxxxxxxxxxxxxxxxxx
reward:
- §71. §7§l★§71 §658800金币
- §72. §7§l★§71 §d120点券
- §73. §7§l★§74 §c异变灵环
- §74. §7§l★§710 §e冰火灵石
- §75. §7§l★§710 §b灵环精片
- §76. §7§l★§73 §f[§a繁花§f]§e幸运夺宝箱钥匙
- §77. §7§l★§710 §f[§a繁花§f]§e灵环抽奖钥匙
- §78. §7§l★§75 §f[§a繁花§f]§e超级灵环抽奖钥匙
- §79. §7§l★§71 §d经验+400%§f(持续30分钟)
- §710. §7§l★§71 §c§l十万年青天牛马灵环
- §711. §7§l★§71 §c§l十万年奇灵舞魅兔灵环
commands:
- eco give %p% 58800
- points give %p% 120
- dhhqc give 十万年_青天牛马灵环 1 %p% true
- dhhqc give 十万年_奇灵舞魅兔灵环 1 %p% true
- ditem give 冰火灵石 10 %p%
- ditem give 灵环精片 10 %p%
- ditem give 幸运夺宝钥匙 3 %p%
- ditem give 魂环抽奖箱钥匙 10 %p%
- ditem give 超级魂环抽奖箱钥匙 5 %p%
- dpotion add %p% 400 30
- dgroupcmd %p% 随机异变灵环 4
- bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.90]&a萌新助力礼包
- msg:&f[&c消息&f] &a成功领取 &e&lLv.90 &a萌新助力礼包。
expup_kejin:
slot: 4
level: 80
base64: xxxxxxxxxxxxxxxxxxxxxxxxx
reward:
- §71. §7§l★§710 §e灵环抽奖钥匙
- §72. §7§l★§710 §e超级灵环抽奖钥匙
- §73. §7§l★§75 §e幸运夺宝箱钥匙
- §74. §7§l★§72 §e次元§5精灵§d秘药
- §75. §7§l★§72 §6大财主金币袋
- §76. §7§l★§71 §c§l十万年巨兽泰坦灵环§d(献祭)
- §77. §7§l★§71 §c§l十万年青天牛马灵环§d(献祭)
- §78. §7§l★§71 §c§l十万年奇灵舞魅兔灵环§d(献祭)
commands:
- ditem give 大财主金币袋 2 %p%
- dpotion give 次元精灵秘药 2 %p%
- ditem give 幸运夺宝钥匙 5 %p%
- ditem give 魂环抽奖箱钥匙 10 %p%
- ditem give 超级魂环抽奖箱钥匙 10 %p%
- dhhqc givepro 十万年_巨兽泰坦灵环 1 %p% true
- dhhqc givepro 十万年_青天牛马灵环 1 %p% true
- dhhqc givepro 十万年_奇灵舞魅兔灵环 1 %p% true
- bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.80]&a土豪助力宝箱
- msg:&f[&c消息&f] &a成功领取 &e&lLv.80 &a土豪助力宝箱。