测试版

This commit is contained in:
tianyu 2024-07-25 00:22:12 +08:00
commit 628c7560b8
11 changed files with 790 additions and 0 deletions

38
.gitignore vendored Normal file
View File

@ -0,0 +1,38 @@
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

37
pom.xml Normal file
View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>DemonBuildShop</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>
<repository>
<id>public-rpg</id>
<url>https://repo.aurora-pixels.com/repository/public-rpg/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.12.2</version>
</dependency>
<dependency>
<groupId>me.Demon.DemonPlugin</groupId>
<artifactId>DemonAPI</artifactId>
<version>1.2.0</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,112 @@
package me.Demon.DemonBuildShop;
import me.Demon.DemonPlugin.DemonAPI;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class Main extends JavaPlugin implements Listener {
public static Main plugin;
public static String prefix = "§7[§建筑商店§7] §f";
public static List<Player> LockAccount = new ArrayList<>();
public void onEnable() {
plugin = this;
saveDefaultConfig();
Bukkit.getPluginManager().registerEvents(this, this);
Bukkit.getServer().getPluginManager().registerEvents(new gui_1(), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new gui_2(), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new gui_3(), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new gui_4(), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new gui_5(), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new gui_6(), plugin);
Bukkit.getConsoleSender().sendMessage("§a[建材商城] §f插件成功载入服务器.");
}
public void onDisable() {
Bukkit.getConsoleSender().sendMessage("§c[建材商城] §f插件已经从服务器中卸载.");
}
public boolean onCommand(CommandSender sender, Command cmd, String CommandLabel, String[] args) {
if (CommandLabel.equalsIgnoreCase("buildshop")) {
if (args.length == 0) {
gui_1.OpenGui((Player) sender);
} else if (args.length == 1 && sender.isOp()) {
if (args[0].equalsIgnoreCase("reload")) {
reloadConfig();
sender.sendMessage(prefix + "配置文件重载完成。");
} else {
OpenGui((Player) sender, Integer.parseInt(args[0]));
}
}
}
return false;
}
@EventHandler
public void onclose(InventoryCloseEvent e) {
Player p = (Player) e.getPlayer();
if (e.getView().getTitle().contains("创建配置文件#")) {
int amount = 0;
String key = e.getView().getTitle().replace("创建配置文件#", "");
getConfig().set("ItemShop_" + key, null);
for (int i = 0; i < e.getInventory().getSize(); i++) {
ItemStack items = e.getInventory().getItem(i);
if (!DemonAPI.itemIsNull(items)) {
getConfig().set("ItemShop_" + key + "." + i + ".price", 4);
items.setAmount(64);
getConfig().set("ItemShop_" + key + "." + i + ".items", items);
saveConfig();
amount++;
}
}
p.sendMessage("创建配置物品总计: §a" + amount + "");
}
}
public static void OpenGui(Player p, int key) {
Inventory inv = Bukkit.createInventory(null, 54, "创建配置文件#" + key);
String str = "ItemShop_" + key;
FileConfiguration yml = Main.plugin.getConfig();
if (yml.getString(str) != null) {
for (String slot_key : yml.getConfigurationSection(str).getKeys(false)) {
ItemStack item = yml.getItemStack(str + "." + slot_key + ".items");
int slot = Integer.parseInt(slot_key);
inv.setItem(slot, item);
}
}
p.openInventory(inv);
}
public static String getTime(String format) {
Date date = Calendar.getInstance().getTime();
SimpleDateFormat datatime = new SimpleDateFormat(format);
return datatime.format(date);
}
public static ItemStack BackBook(String name) {
ItemStack item = new ItemStack(Material.BOOK);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(name);
item.setItemMeta(meta);
return item;
}
}

View File

@ -0,0 +1,98 @@
package me.Demon.DemonBuildShop;
import me.Demon.DemonPlugin.DemonAPI;
import me.skymc.taboomenu.TabooMenuAPI;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.configuration.file.FileConfiguration;
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.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
public class gui_1 implements Listener {
public static String inv_title = "建材商店(第一页)";
public static String Next_String = "ItemShop_1";
public static FileConfiguration yml = Main.plugin.getConfig();
public static void OpenGui(Player p){
Inventory inv = Bukkit.createInventory(null,54,inv_title);
if(yml.getConfigurationSection(Next_String) != null) {
for (String slot : yml.getConfigurationSection(Next_String).getKeys(false)) {
double price = yml.getDouble(Next_String+"." + slot + ".price");
ItemStack items = yml.getItemStack(Next_String+"." + slot + ".items").clone();
inv.setItem(Integer.parseInt(slot), shopItems(items, price));
}
}
inv.setItem(45,arrow(Material.BARRIER,"§c无法进行翻页"));
inv.setItem(49, Main.BackBook("§a返回菜单"));
inv.setItem(53,arrow(Material.ARROW,"§a下一页"));
p.openInventory(inv);
}
public static ItemStack shopItems(ItemStack items,double price){
ItemStack item = items.clone();
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(DemonAPI.getItemName(item));
List<String> lore = new ArrayList<>();
lore.add("§7价格: "+(int) price+"点券");
lore.add("§7数量: "+item.getAmount()+"");
lore.add("§a§l✔§7点击购买");
meta.setLore(lore);
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
item.setItemMeta(meta);
return item;
}
public static ItemStack arrow(Material material, String name){
ItemStack item = new ItemStack(material);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(name);
item.setItemMeta(meta);
return item;
}
@EventHandler
public void onclick(InventoryClickEvent e){
Player p = (Player) e.getWhoClicked();
if(inv_title.equalsIgnoreCase(e.getView().getTitle())){
e.setCancelled(true);
if(e.getRawSlot() == 45){
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1,2);
return;
}
if(e.getRawSlot() == 53){
gui_2.OpenGui(p);
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1,2);
return;
}
if(e.getRawSlot() == 49){
TabooMenuAPI.openMenu(p,"商城菜单",true);
}
if(e.getRawSlot() >= 0 && e.getRawSlot() < 45){
ItemStack item = e.getCurrentItem();
if(!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)){
String str = Next_String+"."+e.getRawSlot()+".";
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1,2);
//获取这个物品多少钱
int price = yml.getInt(str+"price");
if(!DemonAPI.hasPoints(p,price)){
p.sendMessage(Main.prefix + "你需要§d" + price + "§f点券才能操作.");
return;
}
DemonAPI.takePoints(p,price);
p.getInventory().addItem(yml.getItemStack(str+"items").clone());
}
}
}
}
}

View File

@ -0,0 +1,99 @@
package me.Demon.DemonBuildShop;
import me.Demon.DemonPlugin.DemonAPI;
import me.skymc.taboomenu.TabooMenuAPI;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.configuration.file.FileConfiguration;
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.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
public class gui_2 implements Listener {
public static String inv_title = "建材商店(第二页)";
public static String Next_String = "ItemShop_2";
public static FileConfiguration yml = Main.plugin.getConfig();
public static void OpenGui(Player p) {
Inventory inv = Bukkit.createInventory(null, 54, inv_title);
if (yml.getConfigurationSection(Next_String) != null) {
for (String slot : yml.getConfigurationSection(Next_String).getKeys(false)) {
double price = yml.getDouble(Next_String + "." + slot + ".price");
ItemStack items = yml.getItemStack(Next_String + "." + slot + ".items").clone();
inv.setItem(Integer.parseInt(slot), shopItems(items, price));
}
}
inv.setItem(45, arrow(Material.ARROW, "§a上一页"));
inv.setItem(49, Main.BackBook("§a返回菜单"));
inv.setItem(53, arrow(Material.ARROW, "§a下一页"));
p.openInventory(inv);
}
public static ItemStack shopItems(ItemStack items, double price) {
ItemStack item = items.clone();
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(DemonAPI.getItemName(item));
List<String> lore = new ArrayList<>();
lore.add("§7价格: " + (int) price + "点券");
lore.add("§7数量: " + item.getAmount() + "");
lore.add("§a§l✔§7点击购买");
meta.setLore(lore);
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
item.setItemMeta(meta);
return item;
}
public static ItemStack arrow(Material material, String name) {
ItemStack item = new ItemStack(material);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(name);
item.setItemMeta(meta);
return item;
}
@EventHandler
public void onclick(InventoryClickEvent e) {
Player p = (Player) e.getWhoClicked();
if (inv_title.equalsIgnoreCase(e.getView().getTitle())) {
e.setCancelled(true);
if (e.getRawSlot() == 45) {
gui_1.OpenGui(p);
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
return;
}
if (e.getRawSlot() == 53) {
gui_3.OpenGui(p);
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
return;
}
if (e.getRawSlot() == 49) {
TabooMenuAPI.openMenu(p, "商城菜单", true);
}
if (e.getRawSlot() >= 0 && e.getRawSlot() < 45) {
ItemStack item = e.getCurrentItem();
if (!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) {
String str = "ItemShop_" + 2 + "." + e.getRawSlot() + ".";
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
//获取这个物品多少钱
int price = yml.getInt(str + "price");
if (!DemonAPI.hasPoints(p, price)) {
p.sendMessage(Main.prefix + "你需要§d" + price + "§f点券才能操作.");
return;
}
DemonAPI.takePoints(p, price);
p.getInventory().addItem(yml.getItemStack(str + "items").clone());
}
}
}
}
}

View File

@ -0,0 +1,99 @@
package me.Demon.DemonBuildShop;
import me.Demon.DemonPlugin.DemonAPI;
import me.skymc.taboomenu.TabooMenuAPI;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.configuration.file.FileConfiguration;
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.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
public class gui_3 implements Listener {
public static String inv_title = "建材商店(第三页)";
public static String Next_String = "ItemShop_3";
public static FileConfiguration yml = Main.plugin.getConfig();
public static void OpenGui(Player p) {
//获取玩家点券余额
Inventory inv = Bukkit.createInventory(null, 54, inv_title);
if (yml.getConfigurationSection(Next_String) != null) {
for (String slot : yml.getConfigurationSection(Next_String).getKeys(false)) {
double price = yml.getDouble(Next_String + "." + slot + ".price");
ItemStack items = yml.getItemStack(Next_String + "." + slot + ".items").clone();
inv.setItem(Integer.parseInt(slot), shopItems(items, price));
}
}
inv.setItem(45, arrow(Material.ARROW, "§a上一页"));
inv.setItem(49, Main.BackBook("§a返回菜单"));
inv.setItem(53, arrow(Material.BARRIER, "§c最后一页了"));
p.openInventory(inv);
}
public static ItemStack shopItems(ItemStack items, double price) {
ItemStack item = items.clone();
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(DemonAPI.getItemName(item));
List<String> lore = new ArrayList<>();
lore.add("§7价格: " + (int) price + "点券");
lore.add("§7数量: " + item.getAmount() + "");
lore.add("§a§l✔§7点击购买");
meta.setLore(lore);
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
item.setItemMeta(meta);
return item;
}
public static ItemStack arrow(Material material, String name) {
ItemStack item = new ItemStack(material);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(name);
item.setItemMeta(meta);
return item;
}
@EventHandler
public void onclick(InventoryClickEvent e) {
Player p = (Player) e.getWhoClicked();
if (inv_title.equalsIgnoreCase(e.getView().getTitle())) {
e.setCancelled(true);
if (e.getRawSlot() == 45) {
gui_2.OpenGui(p);
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
return;
}
if (e.getRawSlot() == 53) {
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
return;
}
if (e.getRawSlot() == 49) {
TabooMenuAPI.openMenu(p, "商城菜单", true);
}
if (e.getRawSlot() >= 0 && e.getRawSlot() < 45) {
ItemStack item = e.getCurrentItem();
if (!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) {
String str = Next_String + "." + e.getRawSlot() + ".";
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
//获取这个物品多少钱
int price = yml.getInt(str + "price");
if (!DemonAPI.hasPoints(p, price)) {
p.sendMessage(Main.prefix + "你需要§d" + price + "§f点券才能操作.");
return;
}
DemonAPI.takePoints(p, price);
p.getInventory().addItem(yml.getItemStack(str + "items").clone());
}
}
}
}
}

View File

@ -0,0 +1,100 @@
package me.Demon.DemonBuildShop;
import me.Demon.DemonPlugin.DemonAPI;
import me.skymc.taboomenu.TabooMenuAPI;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.configuration.file.FileConfiguration;
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.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
public class gui_4 implements Listener {
public static String inv_title = "建材商店(第四页)";
public static String Next_String = "ItemShop_4";
public static FileConfiguration yml = Main.plugin.getConfig();
public static void OpenGui(Player p) {
Inventory inv = Bukkit.createInventory(null, 54, inv_title);
if (yml.getConfigurationSection(Next_String) != null) {
for (String slot : yml.getConfigurationSection(Next_String).getKeys(false)) {
double price = yml.getDouble(Next_String + "." + slot + ".price");
ItemStack items = yml.getItemStack(Next_String + "." + slot + ".items").clone();
inv.setItem(Integer.parseInt(slot), shopItems(items, price));
}
}
inv.setItem(45, arrow(Material.ARROW, "§a上一页"));
inv.setItem(49, Main.BackBook("§a返回菜单"));
inv.setItem(53, arrow(Material.ARROW, "§a下一页"));
p.openInventory(inv);
}
public static ItemStack shopItems(ItemStack items, double price) {
ItemStack item = items.clone();
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(DemonAPI.getItemName(item));
List<String> lore = new ArrayList<>();
lore.add("§7价格: " + (int) price + "点券");
lore.add("§7数量: " + item.getAmount() + "");
lore.add("§a§l✔§7点击购买");
meta.setLore(lore);
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
item.setItemMeta(meta);
return item;
}
public static ItemStack arrow(Material material, String name) {
ItemStack item = new ItemStack(material);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(name);
item.setItemMeta(meta);
return item;
}
@EventHandler
public void onclick(InventoryClickEvent e) {
Player p = (Player) e.getWhoClicked();
if (inv_title.equalsIgnoreCase(e.getView().getTitle())) {
e.setCancelled(true);
if (e.getRawSlot() == 45) {
gui_3.OpenGui(p);
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
return;
}
if (e.getRawSlot() == 53) {
gui_5.OpenGui(p);
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
return;
}
if (e.getRawSlot() == 49) {
TabooMenuAPI.openMenu(p, "商城菜单", true);
}
if (e.getRawSlot() >= 0 && e.getRawSlot() < 45) {
ItemStack item = e.getCurrentItem();
if (!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) {
String str = Next_String + "." + e.getRawSlot() + ".";
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
//获取这个物品多少钱
int price = yml.getInt(str + "price");
if (!DemonAPI.hasPoints(p, price)) {
p.sendMessage(Main.prefix + "你需要§d" + price + "§f点券才能操作.");
p.closeInventory();
return;
}
DemonAPI.takePoints(p, price);
p.getInventory().addItem(yml.getItemStack(str + "items").clone());
}
}
}
}
}

View File

@ -0,0 +1,100 @@
package me.Demon.DemonBuildShop;
import me.Demon.DemonPlugin.DemonAPI;
import me.skymc.taboomenu.TabooMenuAPI;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.configuration.file.FileConfiguration;
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.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
public class gui_5 implements Listener {
public static String inv_title = "建材商店(第五页)";
public static String Next_String = "ItemShop_5";
public static FileConfiguration yml = Main.plugin.getConfig();
public static void OpenGui(Player p){
Inventory inv = Bukkit.createInventory(null,54,inv_title);
if(yml.getConfigurationSection(Next_String) != null) {
for (String slot : yml.getConfigurationSection(Next_String).getKeys(false)) {
double price = yml.getDouble(Next_String+"." + slot + ".price");
ItemStack items = yml.getItemStack(Next_String+"." + slot + ".items").clone();
inv.setItem(Integer.parseInt(slot), shopItems(items, price));
}
}
inv.setItem(45,arrow(Material.ARROW,"§a上一页"));
inv.setItem(49, Main.BackBook("§a返回菜单"));
inv.setItem(53,arrow(Material.ARROW,"§a下一页"));
p.openInventory(inv);
}
public static ItemStack shopItems(ItemStack items,double price){
ItemStack item = items.clone();
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(DemonAPI.getItemName(item));
List<String> lore = new ArrayList<>();
lore.add("§7价格: "+(int) price+"点券");
lore.add("§7数量: "+item.getAmount()+"");
lore.add("§a§l✔§7点击购买");
meta.setLore(lore);
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
item.setItemMeta(meta);
return item;
}
public static ItemStack arrow(Material material, String name){
ItemStack item = new ItemStack(material);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(name);
item.setItemMeta(meta);
return item;
}
@EventHandler
public void onclick(InventoryClickEvent e){
Player p = (Player) e.getWhoClicked();
if(inv_title.equalsIgnoreCase(e.getView().getTitle())){
e.setCancelled(true);
if(e.getRawSlot() == 45){
gui_4.OpenGui(p);
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1,2);
return;
}
if(e.getRawSlot() == 53){
gui_6.OpenGui(p);
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1,2);
return;
}
if(e.getRawSlot() == 49){
TabooMenuAPI.openMenu(p,"商城菜单",true);
}
if(e.getRawSlot() >= 0 && e.getRawSlot() < 45){
ItemStack item = e.getCurrentItem();
if(!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)){
String str = Next_String+"."+e.getRawSlot()+".";
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1,2);
//获取这个物品多少钱
int price = yml.getInt(str+"price");
if(!DemonAPI.hasPoints(p,price)){
p.sendMessage(Main.prefix + "你需要§d" + price + "§f点券才能操作.");
p.closeInventory();
return;
}
DemonAPI.takePoints(p,price);
p.getInventory().addItem(yml.getItemStack(str+"items").clone());
}
}
}
}
}

View File

@ -0,0 +1,100 @@
package me.Demon.DemonBuildShop;
import cn.hamster3.api.HamsterAPI;
import me.Demon.DemonPlugin.DemonAPI;
import me.skymc.taboomenu.TabooMenuAPI;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.configuration.file.FileConfiguration;
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.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
public class gui_6 implements Listener {
public static String inv_title = "建材商店(第六页)";
public static String Next_String = "ItemShop_6";
public static FileConfiguration yml = Main.plugin.getConfig();
public static void OpenGui(Player p){
Inventory inv = Bukkit.createInventory(null,54,inv_title);
if(yml.getConfigurationSection(Next_String) != null) {
for (String slot : yml.getConfigurationSection(Next_String).getKeys(false)) {
double price = yml.getDouble(Next_String+"." + slot + ".price");
ItemStack items = yml.getItemStack(Next_String+"." + slot + ".items").clone();
inv.setItem(Integer.parseInt(slot), shopItems(items, price));
}
}
inv.setItem(45,arrow(Material.ARROW,"§a上一页"));
inv.setItem(49, Main.BackBook("§a返回菜单"));
inv.setItem(53,arrow(Material.BARRIER,"§c最后一页了"));
p.openInventory(inv);
}
public static ItemStack shopItems(ItemStack items,double price){
ItemStack item = items.clone();
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(DemonAPI.getItemName(item));
List<String> lore = new ArrayList<>();
lore.add("§7价格: "+(int) price+"点券");
lore.add("§7数量: "+item.getAmount()+"");
lore.add("§a§l✔§7点击购买");
meta.setLore(lore);
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
item.setItemMeta(meta);
return item;
}
public static ItemStack arrow(Material material, String name){
ItemStack item = new ItemStack(material);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(name);
item.setItemMeta(meta);
return item;
}
@EventHandler
public void onclick(InventoryClickEvent e){
Player p = (Player) e.getWhoClicked();
if(inv_title.equalsIgnoreCase(e.getView().getTitle())){
e.setCancelled(true);
if(e.getRawSlot() == 45){
gui_5.OpenGui(p);
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1,2);
return;
}
if(e.getRawSlot() == 53){
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1,2);
return;
}
if(e.getRawSlot() == 49){
TabooMenuAPI.openMenu(p,"商城菜单",true);
}
if(e.getRawSlot() >= 0 && e.getRawSlot() < 45){
ItemStack item = e.getCurrentItem();
if(!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)){
String str = Next_String+"."+e.getRawSlot()+".";
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1,2);
//获取这个物品多少钱
int price = yml.getInt(str+"price");
if(!DemonAPI.hasPoints(p,price)){
p.sendMessage(Main.prefix + "你需要§d" + price + "§f点券才能操作.");
p.closeInventory();
return;
}
DemonAPI.takePoints(p,price);
p.getInventory().addItem(yml.getItemStack(str+"items").clone());
}
}
}
}
}

View File

View File

@ -0,0 +1,7 @@
name: DemonBuildShop
main: me.Demon.DemonBuildShop.Main
version: 1.0
depend:
- DemonAPI
commands:
buildshop: