commit 1d6b7d242e2e4458a28d905809a3739b8ca9ee49
Author: tianyu <32282861@qq.com>
Date: Wed Jul 24 07:00:58 2024 +0800
测试版
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..586d91e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,41 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
+/out/
+/libs/
+/.idea/
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..35741a3
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,37 @@
+
+
+ 4.0.0
+
+ org.example
+ DemonShop
+ 1.0-SNAPSHOT
+
+
+ 8
+ 8
+ UTF-8
+
+
+
+
+ public-rpg
+ https://repo.aurora-pixels.com/repository/public-rpg/
+
+
+
+
+
+ org.spigotmc
+ spigot-api
+ 1.12.2
+
+
+ me.Demon.DemonPlugin
+ DemonAPI
+ 1.2.0
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/me/Demon/DemonShop/FileConfig/PlanData.java b/src/main/java/me/Demon/DemonShop/FileConfig/PlanData.java
new file mode 100644
index 0000000..ddabf3b
--- /dev/null
+++ b/src/main/java/me/Demon/DemonShop/FileConfig/PlanData.java
@@ -0,0 +1,34 @@
+package me.Demon.DemonShop.FileConfig;
+
+import org.bukkit.configuration.file.YamlConfiguration;
+
+import java.io.File;
+import java.io.IOException;
+
+public class PlanData {
+
+ public static File file;
+
+ public PlanData(String name){
+ File plans = new File("./plugins/DemonShop","商店配置");
+ plans.mkdir();
+ file = new File(plans,name+".yml");
+ try {
+ file.createNewFile();
+ }catch (IOException e){
+ e.printStackTrace();
+ }
+ }
+
+ public File getFile(){
+ return file;
+ }
+
+ public void save(){
+ try {
+ YamlConfiguration.loadConfiguration(file).save(file);
+ }catch (IOException e){
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/me/Demon/DemonShop/Main.java b/src/main/java/me/Demon/DemonShop/Main.java
new file mode 100644
index 0000000..382f7fc
--- /dev/null
+++ b/src/main/java/me/Demon/DemonShop/Main.java
@@ -0,0 +1,141 @@
+package me.Demon.DemonShop;
+
+import me.Demon.DemonPlugin.DemonAPI;
+import me.Demon.DemonShop.gui.CreateGui;
+import me.Demon.DemonShop.gui.ShopGui;
+import org.bukkit.Bukkit;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+import org.bukkit.configuration.file.YamlConfiguration;
+import org.bukkit.entity.Player;
+import org.bukkit.event.Listener;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.plugin.java.JavaPlugin;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Objects;
+
+public class Main extends JavaPlugin implements Listener {
+
+ public static Main plugin;
+ public static String prefix = "§7[§6商店§7] §f";
+ public static List file_Name = new ArrayList<>();
+ public static HashMap hashItems = new HashMap<>();
+ public static HashMap hashPrice = new HashMap<>();
+ public static HashMap hashAmount = new HashMap<>();
+
+ @Override
+ public void onEnable() {
+ plugin = this;
+ saveDefaultConfig();
+ Bukkit.getConsoleSender().sendMessage("§e[DemonShop] §r正在启动插件...");
+ getServer().getPluginManager().registerEvents(this, this);
+ Bukkit.getServer().getPluginManager().registerEvents(new CreateGui(), plugin);
+ Bukkit.getServer().getPluginManager().registerEvents(new ShopGui(), plugin);
+ loadFile_NameData();
+ }
+
+ public void loadFile_NameData() {
+ File plans = new File("./plugins/DemonShop", "商店配置");
+ File[] files = plans.listFiles();
+ File[] arrayOfFile1;
+ int j = (Objects.requireNonNull(arrayOfFile1 = files)).length;
+ for (int i = 0; i < j; i++) {
+ File s = arrayOfFile1[i];
+ file_Name.add(s.getName().replace(".yml", ""));
+ }
+ }
+
+ public void onDisable() {
+ Bukkit.getConsoleSender().sendMessage("§e[DemonShop] §r正在关闭插件...");
+ }
+
+
+ public boolean onCommand(CommandSender sender, Command cmd, String Command, String[] args) {
+ if (Command.equalsIgnoreCase("dshop")) {
+ if (args.length == 3 && args[0].equalsIgnoreCase("open")) {
+ String key = args[1];
+ if (!file_Name.contains(key)) {
+ sender.sendMessage("该商店不存在,请联系[客服]进行修复.");
+ return true;
+ }
+ File file = new File("plugins/DemonShop/商店配置", key + ".yml");
+ YamlConfiguration yml = YamlConfiguration.loadConfiguration(file);
+ Player p = Bukkit.getPlayer(args[2]);
+ if (p != null) {
+ ShopGui.OpenGui(p, key, yml);
+ } else {
+ sender.sendMessage("目标玩家不在线.");
+ }
+ }
+ if (args.length == 2 && args[0].equalsIgnoreCase("open")) {
+ String key = args[1];
+ if (!file_Name.contains(key)) {
+ sender.sendMessage("该商店不存在,请联系[客服]进行修复.");
+ return true;
+ }
+ File file = new File("plugins/DemonShop/商店配置", key + ".yml");
+ YamlConfiguration yml = YamlConfiguration.loadConfiguration(file);
+ ShopGui.OpenGui((Player) sender, key, yml);
+ }
+ }
+ if (Command.equalsIgnoreCase("dshops") && sender.isOp()) {
+ if (args.length == 0) {
+ sender.sendMessage("/dshops [代号] [价格] [数量]");
+ }
+ if (args.length == 1 && args[0].equalsIgnoreCase("reload")) {
+ file_Name.clear();
+ loadFile_NameData();
+ sender.sendMessage(prefix + "重载完成.");
+ }
+ if (args.length == 3) {
+ Player p = (Player) sender;
+ String key = args[0];
+ File file = getFilePath(key);
+ if (file == null) {
+ sender.sendMessage("请检查该文件配置是否存在.");
+ return true;
+ }
+ YamlConfiguration yml = YamlConfiguration.loadConfiguration(file);
+ ItemStack item = p.getInventory().getItemInHand();
+ if (!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) {
+ int price = Integer.parseInt(args[1]);
+ int amount = Integer.parseInt(args[2]);
+ hashItems.put(p, item);
+ hashPrice.put(p, price);
+ hashAmount.put(p, amount);
+ CreateGui.OpenGui(p, key, yml);
+ } else {
+ sender.sendMessage(prefix + "手持物品出现错误,请检查后再次使用.");
+ }
+ }
+ }
+ return false;
+ }
+
+
+ public static File getFilePath(String name) {
+ File plans = new File("./plugins/DemonShop", "商店配置");
+ File[] files = plans.listFiles();
+ File[] arrayOfFile1;
+ int j = (Objects.requireNonNull(arrayOfFile1 = files)).length;
+ for (int i = 0; i < j; i++) {
+ File s = arrayOfFile1[i];
+ if (s.getName().equals(name + ".yml"))
+ return s;
+ }
+ return null;
+ }
+
+ public static void saveFileConfig(YamlConfiguration yml, File file) {
+ try {
+ yml.save(file);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/me/Demon/DemonShop/gui/CreateGui.java b/src/main/java/me/Demon/DemonShop/gui/CreateGui.java
new file mode 100644
index 0000000..6053fd8
--- /dev/null
+++ b/src/main/java/me/Demon/DemonShop/gui/CreateGui.java
@@ -0,0 +1,65 @@
+package me.Demon.DemonShop.gui;
+
+import me.Demon.DemonShop.Main;
+import org.bukkit.Bukkit;
+import org.bukkit.configuration.file.YamlConfiguration;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.inventory.InventoryClickEvent;
+import org.bukkit.inventory.Inventory;
+import org.bukkit.inventory.ItemStack;
+
+import java.io.File;
+
+public class CreateGui implements Listener {
+
+ public static void OpenGui(Player p, String key, YamlConfiguration yml) {
+ Inventory inv = Bukkit.createInventory(null, 54, "§1§2§3§r正在设置商店: " + key);
+ if (yml.getString("DataShop") != null) {
+ for (String keySlow : yml.getConfigurationSection("DataShop").getKeys(false)) {
+ int slot = Integer.parseInt(keySlow);
+ ItemStack item = yml.getItemStack("DataShop." + keySlow + ".items").clone();
+ inv.setItem(slot, item);
+ }
+ }
+ p.openInventory(inv);
+ }
+
+ @EventHandler
+ public void onclick(InventoryClickEvent e) {
+ Player p = (Player) e.getWhoClicked();
+ if (e.getView().getTitle().contains("§1§2§3§r正在设置商店: ")) {
+ e.setCancelled(true);
+ String key = e.getView().getTitle().replace("§1§2§3§r正在设置商店: ", "");
+ if (e.getRawSlot() >= 0 && e.getRawSlot() <= 54) {
+ File file = Main.getFilePath(key);
+ if (file != null) {
+ YamlConfiguration yml = YamlConfiguration.loadConfiguration(file);
+ if (Main.hashPrice.get(p) == null) {
+ p.closeInventory();
+ return;
+ }
+ int price = Main.hashPrice.get(p);
+ int amount = Main.hashAmount.get(p);
+ ItemStack item = Main.hashItems.get(p);
+ item.setAmount(1);
+ yml.set("DataShop." + e.getRawSlot() + ".VaultType", "Points");
+ yml.set("DataShop." + e.getRawSlot() + ".price", price);
+ yml.set("DataShop." + e.getRawSlot() + ".amount", amount);
+ yml.set("DataShop." + e.getRawSlot() + ".items", item);
+ Main.saveFileConfig(yml, file);
+ RemoveHash();
+ p.sendMessage("设置成功 " + key);
+ OpenGui(p, key, yml);
+ }
+ }
+ }
+ }
+
+ public static void RemoveHash() {
+ Main.hashPrice.clear();
+ Main.hashAmount.clear();
+ Main.hashItems.clear();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/me/Demon/DemonShop/gui/ShopGui.java b/src/main/java/me/Demon/DemonShop/gui/ShopGui.java
new file mode 100644
index 0000000..33e9095
--- /dev/null
+++ b/src/main/java/me/Demon/DemonShop/gui/ShopGui.java
@@ -0,0 +1,259 @@
+package me.Demon.DemonShop.gui;
+
+import me.Demon.DemonCoins.util.CoinsAPI;
+import me.Demon.DemonPlugin.DemonAPI;
+import me.Demon.DemonShop.Main;
+import org.bukkit.Bukkit;
+import org.bukkit.Material;
+import org.bukkit.Sound;
+import org.bukkit.configuration.file.YamlConfiguration;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.inventory.ClickType;
+import org.bukkit.event.inventory.InventoryClickEvent;
+import org.bukkit.inventory.Inventory;
+import org.bukkit.inventory.ItemFlag;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ShopGui implements Listener {
+
+ public static String buyItem_Lore = "§a§l✔§7SHIFT+左键点击购买§s§h§o§p";
+
+ @EventHandler
+ public void onclick(InventoryClickEvent e) {
+ Player p = (Player) e.getWhoClicked();
+ if (e.getView().getTitle().contains("§d§s§h§o§p§r")) {
+ e.setCancelled(true);
+ String key = e.getView().getTitle().replace("§d§s§h§o§p§r", "");
+ if (e.getRawSlot() >= 0 && e.getRawSlot() < e.getInventory().getSize()) {
+ ItemStack click_item = e.getCurrentItem();
+ if (DemonAPI.itemIsNull(click_item)) {
+ return;
+ }
+ if (DemonAPI.itemIsLore(click_item)) {
+ return;
+ }
+ p.playSound(p.getLocation(), Sound.BLOCK_LEVER_CLICK, 1, 2);
+ int keySlot = e.getRawSlot();
+ if (!Main.file_Name.contains(key)) {
+ return;
+ }
+ File file = new File("plugins/DemonShop/商店配置", key + ".yml");
+ YamlConfiguration yml = YamlConfiguration.loadConfiguration(file);
+ if (click_item.getType() == Material.BOOK) {
+ ItemMeta meta = click_item.getItemMeta();
+ if (meta.getDisplayName().contains("§a返回菜单")) {
+ String cmd = yml.getString("BackMenu.cmd");
+ Bukkit.dispatchCommand(Bukkit.getConsoleSender(), cmd.replace("%p%", p.getName()));
+ return;
+ }
+ }
+ String str = "DataShop." + keySlot + ".";
+ String VaultType = yml.getString(str + "VaultType");
+ int price = yml.getInt(str + "price");
+ int amount = yml.getInt(str + "amount");
+ ItemStack item = yml.getItemStack(str + "items").clone();
+ item.setAmount(amount);
+ boolean limit_butt = yml.getBoolean(str + "limit_butt");
+ //获取商品剩余数量
+ int limit_amount = yml.getInt("DataShop." + keySlot + ".limit_amount");
+ if (limit_butt && e.getClick() == ClickType.SHIFT_RIGHT && p.isOp()) {
+ int limit_amount_max = yml.getInt("DataShop." + keySlot + ".limit_amount_max");
+ yml.set("DataShop." + keySlot + ".limit_amount", limit_amount_max);
+ Main.saveFileConfig(yml, file);
+ p.sendMessage(Main.prefix + "成功为商品补货!");
+ OpenGui(p, key, yml);
+ return;
+ }
+ if (e.getClick() == ClickType.SHIFT_LEFT) {
+ //检测该商品是否是限量购买
+ if (limit_butt) {
+ //获取商品剩余数量是否大于1
+ if (limit_amount <= 0) {
+ p.sendMessage(Main.prefix + "该商品已被其他玩家抢购一空...");
+ return;
+ }
+ }
+ if (VaultType.equalsIgnoreCase("points")) {
+ if (DemonAPI.hasPoints(p, price)) {
+ DemonAPI.takePoints(p, price);
+ if (yml.getString(str + "Command") != null) {
+ String commands = yml.getString(str + "Command").replace("%p%", p.getName());
+ Bukkit.dispatchCommand(Bukkit.getConsoleSender(), commands);
+ } else {
+ p.getInventory().addItem(item);
+ }
+ p.sendMessage(Main.prefix + "你花费了§d" + price + "点券§f购买了 " + item.getItemMeta().getDisplayName() + "§7§lx§f§l" + amount);
+ CheckLimitItems(p, limit_butt, keySlot, yml, file, limit_amount, key);
+ if (price >= 100) {
+ if (amount == 1) {
+ Bukkit.broadcastMessage("§7[§6战争领域§7] §f玩家§6" + p.getName() + "§f在" + e.getView().getTitle() + "中购买了 " + item.getItemMeta().getDisplayName());
+ } else {
+ Bukkit.broadcastMessage("§7[§6战争领域§7] §f玩家§6" + p.getName() + "§f在" + e.getView().getTitle() + "中购买了 " + item.getItemMeta().getDisplayName() + "§7§lx§f§l" + amount);
+ }
+ }
+ } else {
+ p.sendMessage(Main.prefix + "你需要§d" + price + "§f点券才能操作.");
+ }
+ } else if (VaultType.equalsIgnoreCase("money")) {
+ if (DemonAPI.hasMoney(p, price)) {
+ DemonAPI.takeMoney(p, price);
+ if (yml.getString(str + "Command") != null) {
+ String commands = yml.getString(str + "Command").replace("%p%", p.getName());
+ Bukkit.dispatchCommand(Bukkit.getConsoleSender(), commands);
+ } else {
+ p.getInventory().addItem(item);
+ }
+ p.sendMessage(Main.prefix + "你花费了§6" + price + "金币§f购买了 " + item.getItemMeta().getDisplayName() + "§7§lx§f§l" + amount);
+ CheckLimitItems(p, limit_butt, keySlot, yml, file, limit_amount, key);
+ } else {
+ p.sendMessage(Main.prefix + "你需要§6$" + price + "§f金币才能操作.");
+ }
+ } else if (VaultType.equalsIgnoreCase("coins")) {
+ if (CoinsAPI.getCoinsAmount(p.getName()) >= price) {
+ CoinsAPI.removeCoins(p.getName(), price);
+ if (yml.getString(str + "Command") != null) {
+ String commands = yml.getString(str + "Command").replace("%p%", p.getName());
+ Bukkit.dispatchCommand(Bukkit.getConsoleSender(), commands);
+ } else {
+ p.getInventory().addItem(item);
+ }
+ p.sendMessage(Main.prefix + "你花费了§b" + price + "软妹币§f购买了 " + item.getItemMeta().getDisplayName() + "§7§lx§f§l" + amount);
+ CheckLimitItems(p, limit_butt, keySlot, yml, file, limit_amount, key);
+ if (price >= 10) {
+ if (amount == 1) {
+ Bukkit.broadcastMessage("§7[§6战争领域§7] §f玩家§6" + p.getName() + "§f在" + e.getView().getTitle() + "中购买了 " + item.getItemMeta().getDisplayName());
+ } else {
+ Bukkit.broadcastMessage("§7[§6战争领域§7] §f玩家§6" + p.getName() + "§f在" + e.getView().getTitle() + "中购买了 " + item.getItemMeta().getDisplayName() + "§7§lx§f§l" + amount);
+ }
+ }
+ } else {
+ p.sendMessage(Main.prefix + "你需要§b" + price + "§f软妹币才能操作.");
+ }
+ }
+ }
+
+ }
+ }
+ }
+
+ public static void takeShopAmount(int KeySlot, YamlConfiguration yml, File file, int limit_amount) {
+ yml.set("DataShop." + KeySlot + ".limit_amount", (limit_amount - 1));
+ Main.saveFileConfig(yml, file);
+ }
+
+ public static void CheckLimitItems(Player p, boolean limit_butt, int keySlot, YamlConfiguration yml, File file, int limit_amount, String key) {
+ if (limit_butt) {
+ takeShopAmount(keySlot, yml, file, limit_amount);
+ OpenGui(p, key, yml);
+ }
+ }
+
+ public static ItemStack getGlass_Pane(String name, int date) {
+ ItemStack item = new ItemStack(160, 1, (short) date);
+ ItemMeta meta = item.getItemMeta();
+ meta.setDisplayName(name);
+ item.setItemMeta(meta);
+ return item;
+ }
+
+
+ public static void OpenGui(Player p, String key, YamlConfiguration yml) {
+ int Guisize = yml.getInt("Guisize");
+ Inventory inv = Bukkit.createInventory(null, Guisize, "§d§s§h§o§p§r" + key);
+ if (yml.getString("DataShop") != null) {
+ String Type = yml.getString("Type");
+ if (!Type.equalsIgnoreCase("money")) {
+ for (int i = 0; i < inv.getSize(); i++) {
+ int date = (int) (Math.random() * 6.0D);
+ inv.setItem(i, getGlass_Pane("§r", date));
+ }
+ }
+ if (yml.getString("BackMenu") != null) {
+ int slot = yml.getInt("BackMenu.slot");
+ inv.setItem(slot, BackMenu());
+ }
+ for (String keySlow : yml.getConfigurationSection("DataShop").getKeys(false)) {
+ int slot = Integer.parseInt(keySlow);
+ ItemStack item = yml.getItemStack("DataShop." + keySlow + ".items").clone();
+ int amount = yml.getInt("DataShop." + keySlow + ".amount");
+ int price = yml.getInt("DataShop." + keySlow + ".price");
+ boolean limit_butt = yml.getBoolean("DataShop." + keySlow + ".limit_butt");
+ String VaultType = yml.getString("DataShop." + keySlow + ".VaultType");
+ if (limit_butt) {
+ int limit_amount = yml.getInt("DataShop." + keySlow + ".limit_amount");
+ int limit_amount_max = yml.getInt("DataShop." + keySlow + ".limit_amount_max");
+ inv.setItem(slot, ShopItems_limit(item, amount, price, limit_amount, limit_amount_max, VaultType));
+ } else {
+ inv.setItem(slot, ShopItems_Nolimit(item, amount, price, VaultType));
+ }
+ }
+ }
+ p.openInventory(inv);
+ p.playSound(p.getLocation(), Sound.BLOCK_CHEST_OPEN, 1, 1);
+ }
+
+ public static ItemStack ShopItems_limit(ItemStack items, int amount, int price, int limit_amount, int limit_amount_max, String VaultType) {
+ ItemStack item = items.clone();
+ item.setAmount(amount);
+ item.setDurability(items.getDurability());
+ ItemMeta meta = item.getItemMeta();
+ List lore = new ArrayList<>();
+ if (VaultType.equalsIgnoreCase("points")) {
+ lore.add("§7§l★§7单买价格: §d" + price + "点券");
+ } else if (VaultType.equalsIgnoreCase("money")) {
+ lore.add("§7§l★§7单买价格: §6" + price + "金币");
+ } else if (VaultType.equalsIgnoreCase("coins")) {
+ lore.add("§7§l★§7单买价格: §b" + price + "软妹币");
+ }
+ lore.add("§7§l★§7限量出售: §b" + limit_amount + " §7/ §b" + limit_amount_max);
+ lore.add(buyItem_Lore);
+ lore.add("§7-------------------------§b§u§y§r");
+ lore.addAll(items.getItemMeta().getLore());
+ meta.setLore(lore);
+ meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
+ meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
+ item.setItemMeta(meta);
+ return item;
+ }
+
+ public static ItemStack ShopItems_Nolimit(ItemStack items, int amount, int price, String VaultType) {
+ ItemStack item = items.clone();
+ item.setAmount(amount);
+ item.setDurability(items.getDurability());
+ ItemMeta meta = item.getItemMeta();
+ List lore = new ArrayList<>();
+ if (VaultType.equalsIgnoreCase("points")) {
+ lore.add("§7§l★§7单买价格: §d" + price + "点券");
+ } else if (VaultType.equalsIgnoreCase("money")) {
+ lore.add("§7§l★§7单买价格: §6" + price + "金币");
+ } else if (VaultType.equalsIgnoreCase("coins")) {
+ lore.add("§7§l★§7单买价格: §b" + price + "软妹币");
+ }
+ lore.add(buyItem_Lore);
+ lore.add("§7-------------------------§b§u§y§r");
+ lore.addAll(items.getItemMeta().getLore());
+ meta.setLore(lore);
+ meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
+ meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
+ item.setItemMeta(meta);
+ return item;
+ }
+
+ public static ItemStack BackMenu() {
+ ItemStack item = new ItemStack(Material.BOOK);
+ ItemMeta meta = item.getItemMeta();
+ meta.setDisplayName("§a返回菜单");
+ List lore = new ArrayList<>();
+ lore.add("§7§l★§7返回商城菜单");
+ meta.setLore(lore);
+ item.setItemMeta(meta);
+ return item;
+ }
+}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
new file mode 100644
index 0000000..e69de29
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
new file mode 100644
index 0000000..6483c5c
--- /dev/null
+++ b/src/main/resources/plugin.yml
@@ -0,0 +1,6 @@
+name: DemonShop
+main: me.Demon.DemonShop.Main
+version: 1.0.1
+commands:
+ dshops:
+ dshop:
\ No newline at end of file
diff --git a/src/main/resources/商店配置/点券商城.yml b/src/main/resources/商店配置/点券商城.yml
new file mode 100644
index 0000000..c650044
--- /dev/null
+++ b/src/main/resources/商店配置/点券商城.yml
@@ -0,0 +1,43 @@
+BackMenu:
+ slot: 1
+ cmd: 'cc open menu'
+VaultType: Points
+Guisize: 27
+DataShop:
+ '0':
+ limit_butt: true
+ limit_amount: 100
+ limit_amount_max: 100
+ price: 5
+ amount: 1
+ items:
+ ==: org.bukkit.inventory.ItemStack
+ type: PAPER
+ meta:
+ ==: ItemMeta
+ meta-type: UNSPECIFIC
+ display-name: §6§l大斗魂奖章
+ lore:
+ - §a§l★§7在§e魂师竞技场§7中兑换获得
+ - §7在大陆中用处十分广泛
+ - §r
+ - '§7使用方法:'
+ - §7用于打造各种装备道具
+ internal: H4sIAAAAAAAAAONiYOBgYCkuSa1g4E5OzMzJTMyPNzQwZAAAMqktbxgAAAA=
+ '2':
+ price: 8
+ amount: 1
+ items:
+ ==: org.bukkit.inventory.ItemStack
+ type: PAPER
+ meta:
+ ==: ItemMeta
+ meta-type: UNSPECIFIC
+ display-name: §6§l大斗魂奖章
+ lore:
+ - §a§l★§7在§e魂师竞技场§7中兑换获得
+ - §7在大陆中用处十分广泛
+ - §r
+ - '§7使用方法:'
+ - §7用于打造各种装备道具
+ internal: H4sIAAAAAAAAAONiYOBgYCkuSa1g4E5OzMzJTMyPNzQwZAAAMqktbxgAAAA=