测试版
This commit is contained in:
commit
7ab25550b7
38
.gitignore
vendored
Normal file
38
.gitignore
vendored
Normal 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
|
42
pom.xml
Normal file
42
pom.xml
Normal file
|
@ -0,0 +1,42 @@
|
|||
<?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>DemonSystemShop</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>
|
||||
<dependency>
|
||||
<groupId>cn.hamster3.cdapi</groupId>
|
||||
<artifactId>CDTimeAPI</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
69
src/main/java/me/Demon/DemonSystemShop/Buy/BuyAPI.java
Normal file
69
src/main/java/me/Demon/DemonSystemShop/Buy/BuyAPI.java
Normal file
|
@ -0,0 +1,69 @@
|
|||
package me.Demon.DemonSystemShop.Buy;
|
||||
|
||||
import me.Demon.DemonPlugin.DemonAPI;
|
||||
import me.Demon.DemonSystemShop.Main;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class BuyAPI {
|
||||
|
||||
public static int getBuyPrice(int slot, int type) {
|
||||
FileConfiguration yml = Main.plugin.getConfig();
|
||||
if (type == 2) {
|
||||
int price = yml.getInt("BuyShop." + slot + ".price");
|
||||
return price * 27;
|
||||
}
|
||||
return yml.getInt("BuyShop." + slot + ".price");
|
||||
}
|
||||
|
||||
public static int getInvAmount(Player p, ItemStack item) {
|
||||
int amount = 0;
|
||||
Inventory inv = p.getInventory();
|
||||
Material material = item.getType();
|
||||
for (int i = 0; i < 36; i++) {
|
||||
ItemStack items = inv.getItem(i);
|
||||
if (!DemonAPI.itemIsNull(items) && DemonAPI.itemIsLore(items)) {
|
||||
Material inv_type = items.getType();
|
||||
if (inv_type == material) {
|
||||
amount = amount + items.getAmount();
|
||||
}
|
||||
}
|
||||
}
|
||||
return amount;
|
||||
}
|
||||
|
||||
public static void SellItemEvent(Inventory inv, int playerAmount, ItemStack item, int sellAmount) {
|
||||
int last = playerAmount - sellAmount;
|
||||
for (int i = 0; i < 36; i++) {
|
||||
ItemStack items = inv.getItem(i);
|
||||
if (!DemonAPI.itemIsNull(items) && DemonAPI.itemIsLore(items)) {
|
||||
Material inv_type = items.getType();
|
||||
if (inv_type == item.getType()) {
|
||||
inv.setItem(i, new ItemStack(Material.AIR));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (last >= 1) {
|
||||
ItemStack newItem = new ItemStack(item.getType());
|
||||
newItem.setAmount(last);
|
||||
inv.addItem(newItem);
|
||||
}
|
||||
}
|
||||
|
||||
// 获取商品收购总金额
|
||||
public static int getBuyMoney(String playName, String type) {
|
||||
FileConfiguration yml = Main.RdDataG;
|
||||
return yml.getInt("Data." + playName + "." + type);
|
||||
}
|
||||
|
||||
// 增加商品收购总金额
|
||||
public static void addBuyMoney(String playName, String type, int money) {
|
||||
FileConfiguration yml = Main.RdDataG;
|
||||
int a = getBuyMoney(playName, type);
|
||||
yml.set("Data." + playName + "." + type, (a + money));
|
||||
Main.saveRdDataConfig();
|
||||
}
|
||||
}
|
152
src/main/java/me/Demon/DemonSystemShop/Buy/BuyShop.java
Normal file
152
src/main/java/me/Demon/DemonSystemShop/Buy/BuyShop.java
Normal file
|
@ -0,0 +1,152 @@
|
|||
package me.Demon.DemonSystemShop.Buy;
|
||||
|
||||
import me.Demon.DemonPlugin.DemonAPI;
|
||||
import me.Demon.DemonSystemShop.Main;
|
||||
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.ClickType;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class BuyShop implements Listener {
|
||||
|
||||
public static String invTitle = "战争领域 - 收购商店(VIP减税)";
|
||||
|
||||
@EventHandler
|
||||
public void onclick(InventoryClickEvent e) {
|
||||
Player p = (Player) e.getWhoClicked();
|
||||
if (e.getView().getTitle().equalsIgnoreCase(invTitle)) {
|
||||
e.setCancelled(true);
|
||||
if ((e.getRawSlot() >= 0) && (e.getRawSlot() < e.getInventory().getSize() - 9)) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
if (!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) {
|
||||
if (e.getClick() == ClickType.LEFT) {
|
||||
if (item.getType() == Material.CAKE) {
|
||||
SellItemsEvant(p, item, 1, e.getRawSlot(), 1);
|
||||
} else if (e.getCurrentItem().getType() == Material.EGG) {
|
||||
SellItemsEvant(p, item, 16, e.getRawSlot(), 1);
|
||||
} else {
|
||||
SellItemsEvant(p, item, 64, e.getRawSlot(), 1);
|
||||
}
|
||||
}
|
||||
if (e.getClick() == ClickType.RIGHT) {
|
||||
if (item.getType() == Material.CAKE) {
|
||||
SellItemsEvant(p, item, 27, e.getRawSlot(), 2);
|
||||
} else if (e.getCurrentItem().getType() == Material.EGG) {
|
||||
SellItemsEvant(p, item, 16 * 27, e.getRawSlot(), 2);
|
||||
} else {
|
||||
SellItemsEvant(p, item, 1728, e.getRawSlot(), 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (e.getRawSlot() == 49) {
|
||||
TabooMenuAPI.openMenu(p, "商城菜单", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void SellItemsEvant(Player p, ItemStack item, int sellAmount, int slot, int type) {
|
||||
//检测玩家是否拥有这么多的物品出售
|
||||
int PlayerAmount = BuyAPI.getInvAmount(p, item);
|
||||
if (PlayerAmount < sellAmount) {
|
||||
p.sendMessage(Main.prefix + "你没有足够的物品.");
|
||||
p.playSound(p.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
|
||||
return;
|
||||
}
|
||||
BuyAPI.SellItemEvent(p.getInventory(), PlayerAmount, item, sellAmount);
|
||||
int price = BuyAPI.getBuyPrice(slot, type);
|
||||
double tax = 0.05;
|
||||
if (p.hasPermission("vip2.use")) {
|
||||
tax = 0.02;
|
||||
} else if (p.hasPermission("vip1.use")) {
|
||||
tax = 0.03;
|
||||
}
|
||||
price = (int) (price - (price * tax));
|
||||
double taxMoney = price * tax;
|
||||
DemonAPI.giveMoney(p, price);
|
||||
p.updateInventory();
|
||||
p.sendMessage(Main.prefix + "你获得了: §f$" + price + "金币 §6(纳税: " + new DecimalFormat("#.##").format(taxMoney) + "金币)");
|
||||
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1);
|
||||
if (item.getType() == Material.DIAMOND) {
|
||||
if (type == 2) {
|
||||
Bukkit.getConsoleSender().sendMessage("[商店-日志] 玩家" + p.getName() + "正在出售大量钻石.");
|
||||
} else {
|
||||
Bukkit.getConsoleSender().sendMessage("[商店-日志] 玩家" + p.getName() + "正在出售钻石.");
|
||||
}
|
||||
}
|
||||
if (item.getType() == Material.DIAMOND) {
|
||||
BuyAPI.addBuyMoney(p.getName(), "DIAMOND", price);
|
||||
} else if (item.getType() == Material.CACTUS) {
|
||||
BuyAPI.addBuyMoney(p.getName(), "CACTUS", price);
|
||||
} else if (item.getType() == Material.WHEAT) {
|
||||
BuyAPI.addBuyMoney(p.getName(), "WHEAT", price);
|
||||
}
|
||||
}
|
||||
|
||||
public static void OpenGui(Player p) {
|
||||
Inventory inv = Bukkit.createInventory(null, 54, invTitle);
|
||||
for (int i = 45; i < inv.getSize(); i++) {
|
||||
inv.setItem(i, glass("§7[[§a▧▧§7]]", 7));
|
||||
}
|
||||
inv.setItem(48, glass("§7[[§a▧▧§7]]", 15));
|
||||
inv.setItem(49, BackBook("§a返回菜单"));
|
||||
inv.setItem(50, glass("§7[[§a▧▧§7]]", 15));
|
||||
FileConfiguration yml = Main.plugin.getConfig();
|
||||
if (yml.getString("BuyShop") != null) {
|
||||
for (String slot_key : yml.getConfigurationSection("BuyShop").getKeys(false)) {
|
||||
ItemStack item = yml.getItemStack("BuyShop." + slot_key + ".items");
|
||||
int price = yml.getInt("BuyShop." + slot_key + ".price");
|
||||
inv.setItem(Integer.parseInt(slot_key), shopitem(item, price));
|
||||
}
|
||||
}
|
||||
p.openInventory(inv);
|
||||
}
|
||||
|
||||
public static ItemStack glass(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 ItemStack BackBook(String name) {
|
||||
ItemStack item = new ItemStack(Material.BOOK);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName(name);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack shopitem(ItemStack items, int money) {
|
||||
ItemStack item = items.clone();
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§7物品: §r" + DemonAPI.getItemName(item));
|
||||
List<String> lore = new ArrayList<>();
|
||||
if (item.getType() == Material.CAKE) {
|
||||
lore.add("§a§l★§7左键出售1个 §f| §7价格: " + money + "元");
|
||||
lore.add("§a§l★§7右键出售27个 §f| §7价格: " + (money * 27) + "元");
|
||||
} else if (item.getType() == Material.EGG) {
|
||||
lore.add("§a§l★§7左键出售16个 §f| §7价格: " + money + "元");
|
||||
lore.add("§a§l★§7右键出售27组 §f| §7价格: " + (money * 27) + "元");
|
||||
} else {
|
||||
lore.add("§a§l★§7左键出售64个 §f| §7价格: " + money + "元");
|
||||
lore.add("§a§l★§7右键出售27组 §f| §7价格: " + (money * 27) + "元");
|
||||
}
|
||||
meta.setLore(lore);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
}
|
93
src/main/java/me/Demon/DemonSystemShop/Buy/ExpShop.java
Normal file
93
src/main/java/me/Demon/DemonSystemShop/Buy/ExpShop.java
Normal file
|
@ -0,0 +1,93 @@
|
|||
package me.Demon.DemonSystemShop.Buy;
|
||||
|
||||
import me.Demon.DemonPlugin.DemonAPI;
|
||||
import me.Demon.DemonSystemShop.Main;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
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 org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ExpShop implements Listener {
|
||||
|
||||
public static String invTitle = "战争领域 - 经验出售";
|
||||
|
||||
@EventHandler
|
||||
public void onclick(InventoryClickEvent e) {
|
||||
Player p = (Player) e.getWhoClicked();
|
||||
if (e.getView().getTitle().equalsIgnoreCase(invTitle)) {
|
||||
e.setCancelled(true);
|
||||
if (e.getRawSlot() == 0) {
|
||||
BuyExpLevel(p, 100, 500);
|
||||
}
|
||||
if (e.getRawSlot() == 2) {
|
||||
BuyExpLevel(p, 500, 2500);
|
||||
}
|
||||
if (e.getRawSlot() == 4) {
|
||||
BuyExpLevel(p, 2000, 10000);
|
||||
}
|
||||
if (e.getRawSlot() == 8) {
|
||||
TabooMenuAPI.openMenu(p, "商城菜单", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void BuyExpLevel(Player p, int sell_exp, int money) {
|
||||
int exp = (int) p.getTotalExperience();
|
||||
if (exp < sell_exp) {
|
||||
p.sendMessage(Main.prefix + "你没有足够的生存经验用于出售.");
|
||||
p.playSound(p.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
|
||||
return;
|
||||
}
|
||||
int take_exp = -sell_exp;
|
||||
p.giveExp(take_exp);
|
||||
DemonAPI.giveMoney(p, money);
|
||||
p.sendMessage(Main.prefix + "你获得了: §f$" + money + "金币");
|
||||
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
|
||||
}
|
||||
|
||||
public static void OpenGui(Player p) {
|
||||
Inventory inv = Bukkit.createInventory(null, 9, invTitle);
|
||||
inv.setItem(0, shopitem(100, 500));
|
||||
inv.setItem(2, shopitem(500, 2500));
|
||||
inv.setItem(4, shopitem(2000, 10000));
|
||||
inv.setItem(8, BackBook("§a返回菜单"));
|
||||
p.openInventory(inv);
|
||||
}
|
||||
|
||||
public static ItemStack glass(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 ItemStack BackBook(String name) {
|
||||
ItemStack item = new ItemStack(Material.BOOK);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName(name);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack shopitem(int exp, int money) {
|
||||
ItemStack item = new ItemStack(Material.EXP_BOTTLE);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§7[§c出售§7] §f生存经验");
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("§7§l★§7" + exp + "经验 = " + money + "元");
|
||||
lore.add("§a§l✔§7点击出售");
|
||||
meta.setLore(lore);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
}
|
182
src/main/java/me/Demon/DemonSystemShop/DayShop/BuyShopPro.java
Normal file
182
src/main/java/me/Demon/DemonSystemShop/DayShop/BuyShopPro.java
Normal file
|
@ -0,0 +1,182 @@
|
|||
package me.Demon.DemonSystemShop.DayShop;
|
||||
|
||||
import me.Demon.DemonPlugin.DemonAPI;
|
||||
import me.Demon.DemonSystemShop.Buy.BuyAPI;
|
||||
import me.Demon.DemonSystemShop.Main;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
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.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class BuyShopPro implements Listener {
|
||||
|
||||
public static String invTitle = "战争领域 - 每日特价商店(VIP减税)";
|
||||
|
||||
@EventHandler
|
||||
public void onclick(InventoryClickEvent e) {
|
||||
Player p = (Player) e.getWhoClicked();
|
||||
if (e.getView().getTitle().equalsIgnoreCase(invTitle)) {
|
||||
e.setCancelled(true);
|
||||
if (e.getRawSlot() == 15) {
|
||||
TabooMenuAPI.openMenu(p, "商城菜单", true);
|
||||
}
|
||||
if (e.getRawSlot() == 13) {
|
||||
if (DemonAPI.hasPoints(p, 2)) {
|
||||
DemonAPI.takePoints(p, 2);
|
||||
DayShopAPI dataAPI = Main.dataAPI.get(p);
|
||||
dataAPI.getDayRandomType();
|
||||
String type = dataAPI.getType();
|
||||
ItemStack item = new ItemStack(Material.valueOf(type));
|
||||
String item_Name = DemonAPI.getItemName(item);
|
||||
p.sendMessage(Main.prefix + "刷新成功!当前特价出售商品为: §e" + item_Name);
|
||||
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
|
||||
BuyShopPro.OpenGui(p);
|
||||
} else {
|
||||
p.sendMessage(Main.prefix + "你需要§d2§f点券才能操作.");
|
||||
p.playSound(p.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
|
||||
}
|
||||
}
|
||||
if (e.getRawSlot() == 11) {
|
||||
if (e.getClick() == ClickType.LEFT) {
|
||||
if (e.getCurrentItem().getType() == Material.CAKE) {
|
||||
SellItemsEvant(p, e.getCurrentItem(), 1, 1);
|
||||
} else if (e.getCurrentItem().getType() == Material.EGG) {
|
||||
SellItemsEvant(p, e.getCurrentItem(), 16, 1);
|
||||
} else {
|
||||
SellItemsEvant(p, e.getCurrentItem(), 64, 1);
|
||||
}
|
||||
}
|
||||
if (e.getClick() == ClickType.RIGHT) {
|
||||
if (e.getCurrentItem().getType() == Material.CAKE) {
|
||||
SellItemsEvant(p, e.getCurrentItem(), 27, 2);
|
||||
} else if (e.getCurrentItem().getType() == Material.EGG) {
|
||||
SellItemsEvant(p, e.getCurrentItem(), 16 * 27, 2);
|
||||
} else {
|
||||
SellItemsEvant(p, e.getCurrentItem(), 1728, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void SellItemsEvant(Player p, ItemStack item, int sellAmount, int type) {
|
||||
//检测玩家是否拥有这么多的物品出售
|
||||
int PlayerAmount = BuyAPI.getInvAmount(p, item);
|
||||
if (PlayerAmount < sellAmount) {
|
||||
p.sendMessage(Main.prefix + "你没有足够的物品.");
|
||||
p.playSound(p.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
|
||||
return;
|
||||
}
|
||||
BuyAPI.SellItemEvent(p.getInventory(), PlayerAmount, item, sellAmount);
|
||||
String type_Name = String.valueOf(item.getType());
|
||||
int price = Main.BuyItemsMap.get(type_Name);
|
||||
if (type == 2) {
|
||||
price = price * 27;
|
||||
}
|
||||
double tax = 0.05;
|
||||
if (p.hasPermission("vip2.use")) {
|
||||
tax = 0.02;
|
||||
} else if (p.hasPermission("vip1.use")) {
|
||||
tax = 0.03;
|
||||
}
|
||||
price = (int) (price - (price * tax));
|
||||
double taxMoney = price * tax;
|
||||
DemonAPI.giveMoney(p, price);
|
||||
p.sendMessage(Main.prefix + "你获得了: §f$" + new DecimalFormat(",###.##").format(price) + "金币 §6(纳税: " + new DecimalFormat("#.##").format(taxMoney) + "金币)");
|
||||
p.updateInventory();
|
||||
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
|
||||
if (item.getType() == Material.DIAMOND) {
|
||||
BuyAPI.addBuyMoney(p.getName(), "DIAMOND", price);
|
||||
} else if (item.getType() == Material.CACTUS) {
|
||||
BuyAPI.addBuyMoney(p.getName(), "CACTUS", price);
|
||||
} else if (item.getType() == Material.WHEAT) {
|
||||
BuyAPI.addBuyMoney(p.getName(), "WHEAT", price);
|
||||
}
|
||||
}
|
||||
|
||||
public static void OpenGui(Player p) {
|
||||
Inventory inv = Bukkit.createInventory(null, 27, invTitle);
|
||||
inv.setItem(0, glass("§7[§6每日特价§7]", 15));
|
||||
inv.setItem(8, glass("§7[§6每日特价§7]", 15));
|
||||
inv.setItem(9, glass("§7[§6每日特价§7]", 15));
|
||||
inv.setItem(17, glass("§7[§6每日特价§7]", 15));
|
||||
inv.setItem(18, glass("§7[§6每日特价§7]", 15));
|
||||
inv.setItem(26, glass("§7[§6每日特价§7]", 15));
|
||||
inv.setItem(13, UpdateType());
|
||||
inv.setItem(15, BackBook("§a返回菜单"));
|
||||
// 获取玩家今日特价出售的商品
|
||||
if (Main.dataAPI.get(p) == null) {
|
||||
Main.dataAPI.put(p, new DayShopAPI(p));
|
||||
}
|
||||
DayShopAPI dataAPI = Main.dataAPI.get(p);
|
||||
String type = dataAPI.getType();
|
||||
Material material = Material.valueOf(type);
|
||||
int price = Main.BuyItemsMap.get(type);
|
||||
inv.setItem(11, shopitem(material, price));
|
||||
p.openInventory(inv);
|
||||
}
|
||||
|
||||
|
||||
public static ItemStack glass(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 ItemStack BackBook(String name) {
|
||||
ItemStack item = new ItemStack(Material.BOOK);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName(name);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack UpdateType() {
|
||||
ItemStack item = new ItemStack(Material.LEVER);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§8« §a刷新商品 §8»");
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("§c§l★§7点击刷新今日特价商品");
|
||||
lore.add("§d§l★§7费用: §d2点券");
|
||||
meta.setLore(lore);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack shopitem(Material material, int money) {
|
||||
ItemStack item = new ItemStack(material);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
String item_Name = DemonAPI.getItemName(item);
|
||||
meta.setDisplayName("§a每日特价 §e" + item_Name);
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("§b今日特价§7出售品是 §7" + item_Name);
|
||||
lore.add("§7按下出售 §7" + item_Name);
|
||||
lore.add(" ");
|
||||
if (item.getType() == Material.CAKE) {
|
||||
lore.add("§a§l★§7左键出售1个 §f| §7价格: " + money + "元");
|
||||
lore.add("§a§l★§7右键出售27个 §f| §7价格: " + (money * 27) + "元");
|
||||
} else if (item.getType() == Material.EGG) {
|
||||
lore.add("§a§l★§7左键出售16个 §f| §7价格: " + money + "元");
|
||||
lore.add("§a§l★§7右键出售27组 §f| §7价格: " + (money * 27) + "元");
|
||||
} else {
|
||||
lore.add("§a§l★§7左键出售64个 §f| §7价格: " + money + "元");
|
||||
lore.add("§a§l★§7右键出售27组 §f| §7价格: " + (money * 27) + "元");
|
||||
}
|
||||
meta.setLore(lore);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package me.Demon.DemonSystemShop.DayShop;
|
||||
|
||||
import me.Demon.DemonPlugin.DemonAPI;
|
||||
import me.Demon.DemonSystemShop.Main;
|
||||
import me.Demon.DemonSystemShop.util.database.SqlManager;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DayShopAPI {
|
||||
|
||||
private final Player p;
|
||||
|
||||
private String type;
|
||||
|
||||
public DayShopAPI(Player p) {
|
||||
this.p = p;
|
||||
SqlManager sqlManager = Main.plugin.getSqlManager();
|
||||
String sqlType = sqlManager.getPlayerData(p);
|
||||
if (sqlType == null) {
|
||||
sqlManager.createPlayerTableData(p);
|
||||
sqlType = sqlManager.getPlayerData(p);
|
||||
}
|
||||
this.type = sqlType;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
if (Main.BuyItemsMap.get(this.type) == null) {
|
||||
return "COBBLESTONE";
|
||||
}
|
||||
return this.type;
|
||||
}
|
||||
|
||||
public void getDayRandomType() {
|
||||
List<String> list = new ArrayList<>(Main.BuyItemsList);
|
||||
int suijishu = (DemonAPI.getRandomInt(list.size(), 1) - 1);
|
||||
this.type = list.get(suijishu);
|
||||
Main.plugin.getSqlManager().SavePlayerData(p, type);
|
||||
}
|
||||
}
|
190
src/main/java/me/Demon/DemonSystemShop/Main.java
Normal file
190
src/main/java/me/Demon/DemonSystemShop/Main.java
Normal file
|
@ -0,0 +1,190 @@
|
|||
package me.Demon.DemonSystemShop;
|
||||
|
||||
import me.Demon.DemonMySql;
|
||||
import me.Demon.DemonPlugin.DemonAPI;
|
||||
import me.Demon.DemonSystemShop.Buy.BuyShop;
|
||||
import me.Demon.DemonSystemShop.Buy.ExpShop;
|
||||
import me.Demon.DemonSystemShop.DayShop.BuyShopPro;
|
||||
import me.Demon.DemonSystemShop.DayShop.DayShopAPI;
|
||||
import me.Demon.DemonSystemShop.Minion.MinionShop;
|
||||
import me.Demon.DemonSystemShop.Sell.BlockShop;
|
||||
import me.Demon.DemonSystemShop.Sell.MoneyShop;
|
||||
import me.Demon.DemonSystemShop.Sell.SellShop;
|
||||
import me.Demon.DemonSystemShop.util.ItemNameUtil;
|
||||
import me.Demon.DemonSystemShop.util.SqlUtil;
|
||||
import me.Demon.DemonSystemShop.util.database.SqlManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
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;
|
||||
|
||||
public class Main extends JavaPlugin {
|
||||
|
||||
public static String pluginName = "系统商店";
|
||||
private SqlUtil sqlUtil;
|
||||
private SqlManager sqlManager;
|
||||
public static Main plugin;
|
||||
public static boolean isJetsMinions = false;
|
||||
public static String prefix = "§7[§6战争领域§7] §f";
|
||||
|
||||
public static HashMap<String, Integer> BuyItemsMap = new HashMap<>();
|
||||
public static List<String> BuyItemsList = new ArrayList<>();
|
||||
public static File ReDatafile = new File("plugins/DemonSystemShop", "Log.yml");
|
||||
public static FileConfiguration RdDataG = YamlConfiguration.loadConfiguration(ReDatafile);
|
||||
|
||||
public static void saveRdDataConfig() {
|
||||
try {
|
||||
RdDataG.save(ReDatafile);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static HashMap<Player, DayShopAPI> dataAPI = new HashMap<>();
|
||||
|
||||
public SqlUtil getSqlUtil() {
|
||||
return sqlUtil;
|
||||
}
|
||||
|
||||
public SqlManager getSqlManager() {
|
||||
return sqlManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
plugin = this;
|
||||
saveDefaultConfig();
|
||||
ItemNameUtil.inits(plugin);
|
||||
Plugin JetsMinions = Bukkit.getPluginManager().getPlugin("JetsMinions");
|
||||
if (JetsMinions != null) {
|
||||
isJetsMinions = true;
|
||||
}
|
||||
Bukkit.getServer().getPluginManager().registerEvents(new MinionShop(), plugin);
|
||||
Bukkit.getServer().getPluginManager().registerEvents(new BuyShop(), plugin);
|
||||
Bukkit.getServer().getPluginManager().registerEvents(new SellShop(), plugin);
|
||||
Bukkit.getServer().getPluginManager().registerEvents(new BuyShopPro(), plugin);
|
||||
Bukkit.getServer().getPluginManager().registerEvents(new BlockShop(), plugin);
|
||||
Bukkit.getServer().getPluginManager().registerEvents(new MoneyShop(), plugin);
|
||||
Bukkit.getServer().getPluginManager().registerEvents(new ExpShop(), plugin);
|
||||
Bukkit.getConsoleSender().sendMessage("§e[系统商城] §r正在启动插件...");
|
||||
// 数据库配置
|
||||
sqlManager = new SqlManager(this);
|
||||
String SQL_Host = DemonMySql.SQL_Host;
|
||||
String SQL_Port = DemonMySql.SQL_Port;
|
||||
String SQL_Database = DemonMySql.SQL_Database;
|
||||
String SQL_Users = DemonMySql.SQL_Users;
|
||||
String SQL_Password = DemonMySql.SQL_Password;
|
||||
sqlUtil = new SqlUtil(this, SQL_Host, SQL_Port, SQL_Database, SQL_Users, SQL_Password);
|
||||
sqlManager.createTable();
|
||||
loadBuyItemsMap();
|
||||
// 数据库配置
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
if (Main.dataAPI.get(p) == null) {
|
||||
Main.dataAPI.put(p, new DayShopAPI(p));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void loadBuyItemsMap() {
|
||||
FileConfiguration yml = Main.plugin.getConfig();
|
||||
for (String slot_key : yml.getConfigurationSection("BuyShop").getKeys(false)) {
|
||||
ItemStack item = yml.getItemStack("BuyShop." + slot_key + ".items");
|
||||
int price = (int) (yml.getInt("BuyShop." + slot_key + ".price") * 1.3);
|
||||
String type = String.valueOf(item.getType());
|
||||
BuyItemsMap.put(type, price);
|
||||
BuyItemsList.add(type);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
getSqlUtil().closeConnection();
|
||||
Bukkit.getConsoleSender().sendMessage("§e[系统商城] §r正在关闭插件...");
|
||||
}
|
||||
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String Command, String[] args) {
|
||||
if (Command.equalsIgnoreCase("systemshop")) {
|
||||
if (args.length == 1 && args[0].equalsIgnoreCase("buyshop")) {
|
||||
BuyShop.OpenGui((Player) sender);
|
||||
}
|
||||
if (args.length == 2 && args[0].equalsIgnoreCase("buyshop")) {
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
if (player != null) {
|
||||
BuyShop.OpenGui(player);
|
||||
}
|
||||
}
|
||||
if (args.length == 1 && args[0].equalsIgnoreCase("jiqiren")) {
|
||||
MinionShop.OpenGui((Player) sender);
|
||||
}
|
||||
if (args.length == 2 && args[0].equalsIgnoreCase("jiqiren")) {
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
if (player != null) {
|
||||
MinionShop.OpenGui(player);
|
||||
}
|
||||
}
|
||||
if (args.length == 1 && args[0].equalsIgnoreCase("sellshop")) {
|
||||
SellShop.OpenGui((Player) sender);
|
||||
}
|
||||
if (args.length == 2 && args[0].equalsIgnoreCase("sellshop")) {
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
if (player != null) {
|
||||
SellShop.OpenGui(player);
|
||||
}
|
||||
}
|
||||
if (args.length == 1 && args[0].equalsIgnoreCase("dayshop")) {
|
||||
BuyShopPro.OpenGui((Player) sender);
|
||||
}
|
||||
if (args.length == 2 && args[0].equalsIgnoreCase("dayshop")) {
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
if (player != null) {
|
||||
BuyShopPro.OpenGui(player);
|
||||
}
|
||||
}
|
||||
if (args.length == 1 && args[0].equalsIgnoreCase("blockshop")) {
|
||||
BlockShop.OpenGui((Player) sender);
|
||||
}
|
||||
if (args.length == 2 && args[0].equalsIgnoreCase("blockshop")) {
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
if (player != null) {
|
||||
BlockShop.OpenGui(player);
|
||||
}
|
||||
}
|
||||
if (args.length == 1 && args[0].equalsIgnoreCase("moneyshop")) {
|
||||
MoneyShop.OpenGui((Player) sender);
|
||||
}
|
||||
if (args.length == 2 && args[0].equalsIgnoreCase("moneyshop")) {
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
if (player != null) {
|
||||
MoneyShop.OpenGui(player);
|
||||
}
|
||||
}
|
||||
if (args.length == 1 && args[0].equalsIgnoreCase("expshop")) {
|
||||
ExpShop.OpenGui((Player) sender);
|
||||
}
|
||||
if (args.length == 2 && args[0].equalsIgnoreCase("expshop")) {
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
if (player != null) {
|
||||
ExpShop.OpenGui(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static String getDayRandomType() {
|
||||
List<String> list = new ArrayList<>(Main.BuyItemsList);
|
||||
int suijishu = (DemonAPI.getRandomInt(list.size(), 1) - 1);
|
||||
return list.get(suijishu);
|
||||
}
|
||||
}
|
262
src/main/java/me/Demon/DemonSystemShop/Minion/MinionShop.java
Normal file
262
src/main/java/me/Demon/DemonSystemShop/Minion/MinionShop.java
Normal file
|
@ -0,0 +1,262 @@
|
|||
package me.Demon.DemonSystemShop.Minion;
|
||||
|
||||
import me.Demon.DemonPlugin.DemonAPI;
|
||||
import me.Demon.DemonSystemShop.Main;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
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.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MinionShop implements Listener {
|
||||
|
||||
public static String invTitle = "战争领域 - 小管家专卖店";
|
||||
|
||||
@EventHandler
|
||||
public void onclick(InventoryClickEvent e) {
|
||||
Player p = (Player) e.getWhoClicked();
|
||||
if (e.getView().getTitle().equalsIgnoreCase(invTitle)) {
|
||||
e.setCancelled(true);
|
||||
if (e.getRawSlot() == 1) {
|
||||
String minion_type = "Miner";
|
||||
BuyEvent(p, minion_type, e.getCurrentItem());
|
||||
}
|
||||
if (e.getRawSlot() == 3) {
|
||||
String minion_type = "Lumberjack";
|
||||
BuyEvent(p, minion_type, e.getCurrentItem());
|
||||
}
|
||||
if (e.getRawSlot() == 5) {
|
||||
String minion_type = "Farmer";
|
||||
BuyEvent(p, minion_type, e.getCurrentItem());
|
||||
}
|
||||
if (e.getRawSlot() == 7) {
|
||||
String minion_type = "Fisher";
|
||||
BuyEvent(p, minion_type, e.getCurrentItem());
|
||||
}
|
||||
if (e.getRawSlot() == 11) {
|
||||
String minion_type = "Collector";
|
||||
BuyEvent(p, minion_type, e.getCurrentItem());
|
||||
}
|
||||
if (e.getRawSlot() == 13) {
|
||||
String minion_type = "Slayer";
|
||||
BuyEvent(p, minion_type, e.getCurrentItem());
|
||||
}
|
||||
if (e.getRawSlot() == 15) {
|
||||
String minion_type = "Feeder";
|
||||
BuyEvent(p, minion_type, e.getCurrentItem());
|
||||
}
|
||||
if (e.getRawSlot() == 31) {
|
||||
TabooMenuAPI.openMenu(p, "商城菜单", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void BuyEvent(Player p, String minion_type, ItemStack items) {
|
||||
int price = 100000;
|
||||
if (!DemonAPI.hasMoney(p, price)) {
|
||||
p.sendMessage(Main.prefix + "你需要§6" + new DecimalFormat(",###.##").format(price) + "§f金币才能操作.");
|
||||
p.playSound(p.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
|
||||
return;
|
||||
}
|
||||
if (!Main.isJetsMinions) {
|
||||
p.sendMessage(Main.prefix + "您需要进入岛屿服后才能购买...");
|
||||
return;
|
||||
}
|
||||
MinionProperties minionProperties = Core.getInstance().getMinionManager().getMinionProperties(minion_type);
|
||||
if (minionProperties == null) {
|
||||
p.sendMessage(Main.prefix + "这个机器人貌似不存在,请联系管理员进行修复.");
|
||||
return;
|
||||
}
|
||||
// 扣除金币
|
||||
DemonAPI.takeMoney(p, price);
|
||||
// 给玩家发货
|
||||
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "jetsminion give " + p.getName() + " " + minion_type + " 1");
|
||||
ItemMeta meta = items.getItemMeta();
|
||||
p.sendMessage(Main.prefix + "你获得了: §f" + meta.getDisplayName().replace("§7物品: ", ""));
|
||||
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
|
||||
}
|
||||
|
||||
public static void OpenGui(Player p) {
|
||||
Inventory inv = Bukkit.createInventory(null, 36, invTitle);
|
||||
for (int i = 27; i < inv.getSize(); i++) {
|
||||
inv.setItem(i, glass("§7[[§a▧▧§7]]", 7));
|
||||
}
|
||||
inv.setItem(30, glass("§7[[§a▧▧§7]]", 15));
|
||||
inv.setItem(31, BackBook("§a返回菜单"));
|
||||
inv.setItem(32, glass("§7[[§a▧▧§7]]", 15));
|
||||
inv.setItem(1, Miner());
|
||||
inv.setItem(3, Lumberjack());
|
||||
inv.setItem(5, Farmer());
|
||||
inv.setItem(7, Fisher());
|
||||
inv.setItem(11, Collector());
|
||||
inv.setItem(13, Slayer());
|
||||
inv.setItem(15, Feeder());
|
||||
p.openInventory(inv);
|
||||
}
|
||||
|
||||
public static ItemStack glass(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 ItemStack BackBook(String name) {
|
||||
ItemStack item = new ItemStack(Material.SHEARS);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName(name);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack Miner() {
|
||||
ItemStack item = new ItemStack(Material.DIAMOND_PICKAXE);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§7物品: §6矿工小管家");
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("§b§l★§f管家用途§7: ");
|
||||
lore.add("§7- §9自动破坏正前方的方块");
|
||||
lore.add("§b§l★§f升级效果§7: ");
|
||||
lore.add("§7- §9增加破坏距离");
|
||||
lore.add(" ");
|
||||
lore.add("§e§l★§7价格: §6" + new DecimalFormat(",###").format(100000) + "金币");
|
||||
lore.add("§a§l✔§7点击购买");
|
||||
meta.setLore(lore);
|
||||
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack Lumberjack() {
|
||||
ItemStack item = new ItemStack(Material.IRON_AXE);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§7物品: §6伐木小管家");
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("§b§l★§f管家用途§7: ");
|
||||
lore.add("§7- §9自动砍伐周围的原木");
|
||||
lore.add("§b§l★§f升级效果§7: ");
|
||||
lore.add("§7- §9增加砍伐范围");
|
||||
lore.add(" ");
|
||||
lore.add("§e§l★§7价格: §6" + new DecimalFormat(",###").format(100000) + "金币");
|
||||
lore.add("§a§l✔§7点击购买");
|
||||
meta.setLore(lore);
|
||||
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack Farmer() {
|
||||
ItemStack item = new ItemStack(Material.GOLD_HOE);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§7物品: §6种植小管家");
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("§b§l★§f管家用途§7: ");
|
||||
lore.add("§7- §9自动开垦和收获周围农作物");
|
||||
lore.add("§b§l★§f升级效果§7: ");
|
||||
lore.add("§7- §9增加开垦和收获作物范围");
|
||||
lore.add(" ");
|
||||
lore.add("§e§l★§7价格: §6" + new DecimalFormat(",###").format(100000) + "金币");
|
||||
lore.add("§a§l✔§7点击购买");
|
||||
meta.setLore(lore);
|
||||
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack Fisher() {
|
||||
ItemStack item = new ItemStack(Material.RAW_FISH);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§7物品: §6渔夫小管家");
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("§b§l★§f管家用途§7: ");
|
||||
lore.add("§7- §9自动在周围水域捕鱼");
|
||||
lore.add("§b§l★§f升级效果§7: ");
|
||||
lore.add("§7- §9增加捕鱼范围");
|
||||
lore.add(" ");
|
||||
lore.add("§e§l★§7价格: §6" + new DecimalFormat(",###").format(100000) + "金币");
|
||||
lore.add("§a§l✔§7点击购买");
|
||||
meta.setLore(lore);
|
||||
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack Collector() {
|
||||
ItemStack item = new ItemStack(Material.COMPASS);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§7物品: §6清道夫小管家");
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("§b§l★§f管家用途§7: ");
|
||||
lore.add("§7- §9自动收集周围掉落物");
|
||||
lore.add("§b§l★§f升级效果§7: ");
|
||||
lore.add("§7- §9增加收集范围");
|
||||
lore.add(" ");
|
||||
lore.add("§e§l★§7价格: §6" + new DecimalFormat(",###").format(100000) + "金币");
|
||||
lore.add("§a§l✔§7点击购买");
|
||||
meta.setLore(lore);
|
||||
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack Slayer() {
|
||||
ItemStack item = new ItemStack(Material.IRON_SWORD);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§7物品: §6杀手小管家");
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("§b§l★§f管家用途§7: ");
|
||||
lore.add("§7- §9自动击杀周围生物");
|
||||
lore.add("§b§l★§f升级效果§7: ");
|
||||
lore.add("§7- §9增加击杀范围");
|
||||
lore.add(" ");
|
||||
lore.add("§e§l★§7价格: §6" + new DecimalFormat(",###").format(100000) + "金币");
|
||||
lore.add("§a§l✔§7点击购买");
|
||||
meta.setLore(lore);
|
||||
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack Feeder() {
|
||||
ItemStack item = new ItemStack(Material.GOLDEN_APPLE);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§7物品: §6充能小管家");
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("§b§l★§f管家用途§7: ");
|
||||
lore.add("§7- §9自动为周围其他小管家充能");
|
||||
lore.add("§b§l★§f升级效果§7: ");
|
||||
lore.add("§7- §9增加充能范围");
|
||||
lore.add(" ");
|
||||
lore.add("§e§l★§7价格: §6" + new DecimalFormat(",###").format(100000) + "金币");
|
||||
lore.add("§a§l✔§7点击购买");
|
||||
meta.setLore(lore);
|
||||
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack shopitem(ItemStack items, int price) {
|
||||
ItemStack item = items;
|
||||
item.setAmount(1);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§7物品: §r" + DemonAPI.getItemName(item));
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("§7价格: " + new DecimalFormat(",###.##").format(price) + "金币");
|
||||
lore.add("§7数量: 1280个(20组)");
|
||||
lore.add("§a§l✔§7点击购买");
|
||||
meta.setLore(lore);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
}
|
108
src/main/java/me/Demon/DemonSystemShop/Sell/BlockShop.java
Normal file
108
src/main/java/me/Demon/DemonSystemShop/Sell/BlockShop.java
Normal file
|
@ -0,0 +1,108 @@
|
|||
package me.Demon.DemonSystemShop.Sell;
|
||||
|
||||
import me.Demon.DemonPlugin.DemonAPI;
|
||||
import me.Demon.DemonSystemShop.Main;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
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 org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class BlockShop implements Listener {
|
||||
public static String invTitle = "战争领域 - 大量购买矿物块";
|
||||
|
||||
@EventHandler
|
||||
public void onclick(InventoryClickEvent e) {
|
||||
Player p = (Player) e.getWhoClicked();
|
||||
if (e.getView().getTitle().equalsIgnoreCase(invTitle)) {
|
||||
e.setCancelled(true);
|
||||
if ((e.getRawSlot() >= 0) && (e.getRawSlot() < e.getInventory().getSize() - 9)) {
|
||||
int price = -1;
|
||||
if (e.getRawSlot() == 0) {
|
||||
price = 576000;
|
||||
} else if (e.getRawSlot() == 1) {
|
||||
price = 806400;
|
||||
} else if (e.getRawSlot() == 2) {
|
||||
price = 2304000;
|
||||
} else if (e.getRawSlot() == 3) {
|
||||
price = 3456000;
|
||||
}
|
||||
if (price <= 0) {
|
||||
return;
|
||||
}
|
||||
if (!DemonAPI.hasMoney(p, price)) {
|
||||
p.sendMessage(Main.prefix + "你需要§6" + new DecimalFormat(",###.##").format(price) + "§f金币才能操作.");
|
||||
p.playSound(p.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
|
||||
return;
|
||||
}
|
||||
// 扣除金币
|
||||
DemonAPI.takeMoney(p, price);
|
||||
// 获取玩家购买物品
|
||||
ItemStack item = e.getCurrentItem();
|
||||
ItemStack shop_item = new ItemStack(item.getType());
|
||||
int amount = 1280;
|
||||
shop_item.setAmount(amount);
|
||||
p.getInventory().addItem(shop_item);
|
||||
p.sendMessage(Main.prefix + "你获得了: §f" + DemonAPI.getItemName(shop_item) + "§7x§f" + amount);
|
||||
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
|
||||
}
|
||||
if (e.getRawSlot() == 31) {
|
||||
TabooMenuAPI.openMenu(p, "商城菜单", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void OpenGui(Player p) {
|
||||
Inventory inv = Bukkit.createInventory(null, 36, invTitle);
|
||||
for (int i = 27; i < inv.getSize(); i++) {
|
||||
inv.setItem(i, glass("§7[[§a▧▧§7]]", 7));
|
||||
}
|
||||
inv.setItem(30, glass("§7[[§a▧▧§7]]", 15));
|
||||
inv.setItem(31, BackBook("§a返回菜单"));
|
||||
inv.setItem(32, glass("§7[[§a▧▧§7]]", 15));
|
||||
inv.setItem(0, shopitem(new ItemStack(Material.IRON_BLOCK), 576000));
|
||||
inv.setItem(1, shopitem(new ItemStack(Material.GOLD_BLOCK), 806400));
|
||||
inv.setItem(2, shopitem(new ItemStack(Material.DIAMOND_BLOCK), 2304000));
|
||||
inv.setItem(3, shopitem(new ItemStack(Material.EMERALD_BLOCK), 3456000));
|
||||
p.openInventory(inv);
|
||||
}
|
||||
|
||||
public static ItemStack glass(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 ItemStack BackBook(String name) {
|
||||
ItemStack item = new ItemStack(Material.BOOK);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName(name);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack shopitem(ItemStack items, int price) {
|
||||
ItemStack item = items;
|
||||
item.setAmount(1);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§7物品: §r" + DemonAPI.getItemName(item));
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("§7价格: " + new DecimalFormat(",###.##").format(price) + "金币");
|
||||
lore.add("§7数量: 1280个(20组)");
|
||||
lore.add("§a§l✔§7点击购买");
|
||||
meta.setLore(lore);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
}
|
133
src/main/java/me/Demon/DemonSystemShop/Sell/MoneyShop.java
Normal file
133
src/main/java/me/Demon/DemonSystemShop/Sell/MoneyShop.java
Normal file
|
@ -0,0 +1,133 @@
|
|||
package me.Demon.DemonSystemShop.Sell;
|
||||
|
||||
import me.Demon.DemonPlugin.DemonAPI;
|
||||
import me.Demon.DemonSystemShop.Buy.BuyAPI;
|
||||
import me.Demon.DemonSystemShop.Main;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
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 org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MoneyShop implements Listener {
|
||||
public static String invTitle = "战争领域 - 现金兑换";
|
||||
|
||||
@EventHandler
|
||||
public void onclick(InventoryClickEvent e) {
|
||||
Player p = (Player) e.getWhoClicked();
|
||||
if (e.getView().getTitle().equalsIgnoreCase(invTitle)) {
|
||||
e.setCancelled(true);
|
||||
if ((e.getRawSlot() >= 0) && (e.getRawSlot() < e.getInventory().getSize() - 9)) {
|
||||
if (e.getRawSlot() == 1) {
|
||||
BuyMoneyPaper(p, 100, "现金券_100");
|
||||
}
|
||||
if (e.getRawSlot() == 3) {
|
||||
BuyMoneyPaper(p, 500, "现金券_500");
|
||||
}
|
||||
if (e.getRawSlot() == 5) {
|
||||
BuyMoneyPaper(p, 1000, "现金券_1000");
|
||||
}
|
||||
if (e.getRawSlot() == 7) {
|
||||
BuyMoneyPaper(p, 5000, "现金券_5000");
|
||||
}
|
||||
if (e.getRawSlot() == 9) {
|
||||
BuyMoneyPaper(p, 10000, "现金券_1W");
|
||||
}
|
||||
if (e.getRawSlot() == 11) {
|
||||
BuyMoneyPaper(p, 50000, "现金券_5W");
|
||||
}
|
||||
if (e.getRawSlot() == 13) {
|
||||
BuyMoneyPaper(p, 100000, "现金券_10W");
|
||||
}
|
||||
if (e.getRawSlot() == 15) {
|
||||
BuyMoneyPaper(p, 500000, "现金券_50W");
|
||||
}
|
||||
if (e.getRawSlot() == 17) {
|
||||
BuyMoneyPaper(p, 1000000, "现金券_100W");
|
||||
}
|
||||
}
|
||||
if (e.getRawSlot() == 31) {
|
||||
TabooMenuAPI.openMenu(p, "商城菜单", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void BuyMoneyPaper(Player p, int money, String item_Key) {
|
||||
int price = (int) (money * 1.05);
|
||||
if (!DemonAPI.hasMoney(p, price)) {
|
||||
p.sendMessage(Main.prefix + "你需要§6" + new DecimalFormat(",###.##").format(price) + "§f金币才能操作.");
|
||||
p.playSound(p.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
|
||||
return;
|
||||
}
|
||||
// 扣除金币
|
||||
DemonAPI.takeMoney(p, price);
|
||||
// 获取玩家购买物品
|
||||
ItemStack item = ItemKuAPI.getItems(p, item_Key, 1);
|
||||
p.getInventory().addItem(item);
|
||||
p.sendMessage(Main.prefix + "你获得了: §f" + DemonAPI.getItemName(item));
|
||||
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
|
||||
if (price >= 50000) {
|
||||
BuyAPI.addBuyMoney(p.getName(), item_Key, 1);
|
||||
}
|
||||
}
|
||||
|
||||
public static void OpenGui(Player p) {
|
||||
Inventory inv = Bukkit.createInventory(null, 36, invTitle);
|
||||
for (int i = 27; i < inv.getSize(); i++) {
|
||||
inv.setItem(i, glass("§7[[§a▧▧§7]]", 7));
|
||||
}
|
||||
inv.setItem(30, glass("§7[[§a▧▧§7]]", 15));
|
||||
inv.setItem(31, BackBook("§a返回菜单"));
|
||||
inv.setItem(32, glass("§7[[§a▧▧§7]]", 15));
|
||||
inv.setItem(1, shopitem("§e现金券 §7[§6100§7]", 100));
|
||||
inv.setItem(3, shopitem("§e现金券 §7[§6500§7]", 500));
|
||||
inv.setItem(5, shopitem("§e现金券 §7[§61000§7]", 1000));
|
||||
inv.setItem(7, shopitem("§e现金券 §7[§65000§7]", 5000));
|
||||
|
||||
inv.setItem(9, shopitem("§e现金券 §7[§610000§7]", 10000));
|
||||
inv.setItem(11, shopitem("§e现金券 §7[§650000§7]", 50000));
|
||||
inv.setItem(13, shopitem("§e现金券 §7[§b10W§7]", 100000));
|
||||
inv.setItem(15, shopitem("§e现金券 §7[§b50W§7]", 500000));
|
||||
inv.setItem(17, shopitem("§e现金券 §7[§b100W§7]", 1000000));
|
||||
p.openInventory(inv);
|
||||
}
|
||||
|
||||
public static ItemStack glass(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 ItemStack BackBook(String name) {
|
||||
ItemStack item = new ItemStack(Material.BOOK);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName(name);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack shopitem(String name, int money) {
|
||||
ItemStack item = new ItemStack(Material.PAPER);
|
||||
item.setAmount(1);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§7[§a购买§7] §r" + name);
|
||||
List<String> lore = new ArrayList<>();
|
||||
int price = (int) (money * 1.05);
|
||||
lore.add("§7价格: " + new DecimalFormat(",###.##").format(price) + "金币");
|
||||
lore.add("§a§l✔§7点击购买");
|
||||
meta.setLore(lore);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
}
|
13
src/main/java/me/Demon/DemonSystemShop/Sell/SellAPI.java
Normal file
13
src/main/java/me/Demon/DemonSystemShop/Sell/SellAPI.java
Normal file
|
@ -0,0 +1,13 @@
|
|||
package me.Demon.DemonSystemShop.Sell;
|
||||
|
||||
import me.Demon.DemonSystemShop.Main;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
||||
public abstract class SellAPI {
|
||||
|
||||
public static int getSellPrice(int slot) {
|
||||
FileConfiguration yml = Main.plugin.getConfig();
|
||||
return yml.getInt("SellShop." + slot + ".price");
|
||||
}
|
||||
|
||||
}
|
147
src/main/java/me/Demon/DemonSystemShop/Sell/SellShop.java
Normal file
147
src/main/java/me/Demon/DemonSystemShop/Sell/SellShop.java
Normal file
|
@ -0,0 +1,147 @@
|
|||
package me.Demon.DemonSystemShop.Sell;
|
||||
|
||||
import cn.hamster3.cdapi.CDTimeAPI;
|
||||
import me.Demon.DemonPlugin.DemonAPI;
|
||||
import me.Demon.DemonSystemShop.Main;
|
||||
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.ClickType;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class SellShop implements Listener {
|
||||
|
||||
public static String invTitle = "战争领域 - 出售商店";
|
||||
|
||||
@EventHandler
|
||||
public void onclick(InventoryClickEvent e) {
|
||||
Player p = (Player) e.getWhoClicked();
|
||||
if(e.getView().getTitle().equalsIgnoreCase(invTitle)) {
|
||||
e.setCancelled(true);
|
||||
if ((e.getRawSlot() >= 0) && (e.getRawSlot() < e.getInventory().getSize() - 9)) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
if(!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)){
|
||||
FileConfiguration yml = Main.plugin.getConfig();
|
||||
if (e.getClick() == ClickType.LEFT) {
|
||||
int price = SellAPI.getSellPrice(e.getRawSlot());
|
||||
ItemStack shop_item = yml.getItemStack("SellShop."+e.getRawSlot()+".items").clone();
|
||||
SellItemEvent(p,shop_item,price,1);
|
||||
}
|
||||
if (e.getClick() == ClickType.RIGHT) {
|
||||
int price = SellAPI.getSellPrice(e.getRawSlot());
|
||||
ItemStack shop_item = yml.getItemStack("SellShop."+e.getRawSlot()+".items").clone();
|
||||
SellItemEvent(p,shop_item,price,16);
|
||||
}
|
||||
if (e.getClick() == ClickType.MIDDLE) {
|
||||
int price = SellAPI.getSellPrice(e.getRawSlot());
|
||||
ItemStack shop_item = yml.getItemStack("SellShop."+e.getRawSlot()+".items").clone();
|
||||
SellItemEvent(p,shop_item,price,64);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(e.getRawSlot() == 49){
|
||||
TabooMenuAPI.openMenu(p,"商城菜单",true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void SellItemEvent(Player p,ItemStack shop_item,int price,int amount){
|
||||
if(CDTimeAPI.getCD(p.getUniqueId(),"sellshop_cd") >= 0){
|
||||
p.sendMessage(Main.prefix+"请勿频繁进行此操作.");
|
||||
p.playSound(p.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
|
||||
return;
|
||||
}
|
||||
int new_price = price * amount;
|
||||
if(!DemonAPI.hasMoney(p,new_price)){
|
||||
p.sendMessage(Main.prefix+"你需要§6"+new DecimalFormat(",###.##").format(new_price)+"§f金币才能操作.");
|
||||
p.playSound(p.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
|
||||
return;
|
||||
}
|
||||
CDTimeAPI.setPlayerCD(p.getUniqueId(),"sellshop_cd",1000*3);
|
||||
// 扣除金币
|
||||
DemonAPI.takeMoney(p,new_price);
|
||||
// 获取玩家购买物品
|
||||
shop_item.setAmount(amount);
|
||||
p.getInventory().addItem(shop_item);
|
||||
if(shop_item.getAmount() == 1) {
|
||||
p.sendMessage(Main.prefix + "你获得了: §f" + DemonAPI.getItemName(shop_item));
|
||||
}else{
|
||||
p.sendMessage(Main.prefix + "你获得了: §f" + DemonAPI.getItemName(shop_item)+"§7x§f"+shop_item.getAmount());
|
||||
}
|
||||
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 2);
|
||||
}
|
||||
|
||||
public static void OpenGui(Player p){
|
||||
Inventory inv = Bukkit.createInventory(null,54,invTitle);
|
||||
for (int i = 45;i<inv.getSize();i++) {
|
||||
inv.setItem(i, glass("§7[[§a▧▧§7]]", 7));
|
||||
}
|
||||
inv.setItem(48, glass("§7[[§a▧▧§7]]", 15));
|
||||
inv.setItem(49, BackBook("§a返回菜单"));
|
||||
inv.setItem(50, glass("§7[[§a▧▧§7]]", 15));
|
||||
FileConfiguration yml = Main.plugin.getConfig();
|
||||
if(yml.getString("SellShop") != null) {
|
||||
for (String slot_key : yml.getConfigurationSection("SellShop").getKeys(false)) {
|
||||
ItemStack item = yml.getItemStack("SellShop." + slot_key + ".items");
|
||||
int price = yml.getInt("SellShop." + slot_key + ".price");
|
||||
inv.setItem(Integer.parseInt(slot_key), shopItems(item,price));
|
||||
}
|
||||
}
|
||||
p.openInventory(inv);
|
||||
}
|
||||
|
||||
public static ItemStack glass(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 ItemStack BackBook(String name){
|
||||
ItemStack item = new ItemStack(Material.BOOK);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName(name);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static ItemStack shopitem(ItemStack items,int price){
|
||||
ItemStack item = items.clone();
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§7物品: §r"+DemonAPI.getItemName(item));
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("§7价格: "+new DecimalFormat(",###.##").format(price)+"金币");
|
||||
lore.add("§7数量: "+item.getAmount()+"个");
|
||||
lore.add("§a§l✔§7点击购买");
|
||||
meta.setLore(lore);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
public static ItemStack shopItems(ItemStack items,int money){
|
||||
ItemStack item = items.clone();
|
||||
item.setAmount(1);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§e§l★ §a购买物品: §r"+DemonAPI.getItemName(item));
|
||||
List<String> lore = new ArrayList<>();
|
||||
double price_2 = money*16;
|
||||
double price_3 = money*64;
|
||||
lore.add("§a§l★ §7物品单价: §6"+new DecimalFormat(",###.##").format(money)+" §7金币");
|
||||
lore.add("§a§l★ §6左键 §7支付 §6"+new DecimalFormat(",###.##").format(money)+" §7金币购买 §b1 §7个");
|
||||
lore.add("§a§l★ §6右键 §7支付 §6"+new DecimalFormat(",###.##").format(price_2)+" §7金币购买 §b16 §7个");
|
||||
lore.add("§a§l★ §6中键 §7支付 §6"+new DecimalFormat(",###.##").format(price_3)+" §7金币购买 §b64 §7个");
|
||||
meta.setLore(lore);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
package me.Demon.DemonSystemShop.util;
|
||||
|
||||
import com.google.common.base.Charsets;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.util.Objects;
|
||||
|
||||
public class ItemNameUtil {
|
||||
|
||||
private static FileConfiguration fileConfiguration = null;
|
||||
|
||||
public static void inits(Plugin plugin){
|
||||
File configFile = new File(plugin.getDataFolder(), "ItemName.yml");
|
||||
if (!configFile.exists()){
|
||||
plugin.saveResource("ItemName.yml", false);
|
||||
}
|
||||
fileConfiguration = YamlConfiguration.loadConfiguration(configFile);
|
||||
Reader defConfigStream = new InputStreamReader(plugin.getResource("ItemName.yml"), Charsets.UTF_8);
|
||||
YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
|
||||
fileConfiguration.setDefaults(defConfig);
|
||||
}
|
||||
|
||||
public static String getChineseName(ItemStack itemStack) {
|
||||
Material material = itemStack.getType();
|
||||
short data = itemStack.getData().getData();
|
||||
String type = material.name();
|
||||
if(data != 0){
|
||||
type = material.name()+":"+data;
|
||||
}
|
||||
if (fileConfiguration.getString(type) != null) {
|
||||
return fileConfiguration.getString(type);
|
||||
}
|
||||
return type;
|
||||
}
|
||||
}
|
108
src/main/java/me/Demon/DemonSystemShop/util/SqlUtil.java
Normal file
108
src/main/java/me/Demon/DemonSystemShop/util/SqlUtil.java
Normal file
|
@ -0,0 +1,108 @@
|
|||
package me.Demon.DemonSystemShop.util;
|
||||
|
||||
import me.Demon.DemonSystemShop.Main;
|
||||
import me.Demon.DemonSystemShop.util.database.MegumiSQL;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import java.sql.*;
|
||||
|
||||
public class SqlUtil extends MegumiSQL {
|
||||
|
||||
private Main plugin;
|
||||
private final String hostname;
|
||||
private final String port;
|
||||
private final String database;
|
||||
private final String username;
|
||||
private final String password;
|
||||
private Connection connection;
|
||||
|
||||
public SqlUtil(Main plugin, String hostname, String port, String database, String username, String password) {
|
||||
this.plugin = plugin;
|
||||
this.hostname = hostname;
|
||||
this.port = port;
|
||||
this.database = database;
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
this.connection = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openConnection() {
|
||||
try {
|
||||
Class.forName("com.mysql.jdbc.Driver");
|
||||
this.connection = DriverManager.getConnection("jdbc:mysql://" + this.hostname + ":" + this.port + "/" + this.database + "?useSSL=false", this.username, this.password);
|
||||
} catch (SQLException e) {
|
||||
Bukkit.getConsoleSender().sendMessage("§6["+ Main.pluginName+"] §c数据库连接失败!");
|
||||
this.connection = null;
|
||||
} catch (ClassNotFoundException e) {
|
||||
Bukkit.getConsoleSender().sendMessage("§6["+ Main.pluginName+"] §c未找到JDBC驱动程序!");
|
||||
this.connection = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkConnection() {
|
||||
return this.connection != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Connection getConnection() {
|
||||
return this.connection;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeConnection() {
|
||||
if (this.connection != null) {
|
||||
try {
|
||||
this.connection.close();
|
||||
this.connection = null;
|
||||
} catch (SQLException e) {
|
||||
Bukkit.getConsoleSender().sendMessage("§6["+ Main.pluginName+"] §c关闭数据库失败!");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ResultSet querySQL(String query) {
|
||||
Connection conn;
|
||||
if (checkConnection())
|
||||
conn = getConnection();
|
||||
else
|
||||
return null;
|
||||
Statement stat = null;
|
||||
try {
|
||||
stat = conn.createStatement();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
ResultSet result = null;
|
||||
try {
|
||||
if (stat != null)
|
||||
result = stat.executeQuery(query);
|
||||
else
|
||||
return null;
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public boolean updateSQL(String data) {
|
||||
Connection conn;
|
||||
if (checkConnection()) {
|
||||
conn = getConnection();
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
Statement stat = null;
|
||||
try {
|
||||
stat = conn.createStatement();
|
||||
stat.executeUpdate(data);
|
||||
return true;
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package me.Demon.DemonSystemShop.util.database;
|
||||
|
||||
import java.sql.Connection;
|
||||
|
||||
public abstract class MegumiSQL {
|
||||
|
||||
public abstract void openConnection();
|
||||
|
||||
public abstract boolean checkConnection();
|
||||
|
||||
public abstract Connection getConnection();
|
||||
|
||||
public abstract void closeConnection();
|
||||
|
||||
}
|
|
@ -0,0 +1,94 @@
|
|||
package me.Demon.DemonSystemShop.util.database;
|
||||
|
||||
import me.Demon.DemonSystemShop.DayShop.DayShopAPI;
|
||||
import me.Demon.DemonSystemShop.Main;
|
||||
import me.Demon.DemonSystemShop.util.SqlUtil;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.util.Date;
|
||||
|
||||
public class SqlManager {
|
||||
|
||||
private Main plugin;
|
||||
|
||||
public String table = "skyblock_dayshop";
|
||||
|
||||
public SqlManager(Main plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
private SqlUtil getSQL() {
|
||||
return plugin.getSqlUtil();
|
||||
}
|
||||
|
||||
// 创建数据库表格格式
|
||||
public void createTable() {
|
||||
// 数据库结构组成
|
||||
// 玩家名字(VARCHAR) 出售品类型(VARCHAR) 刷新时间(VARCHAR)
|
||||
String s = "CREATE TABLE IF NOT EXISTS "+table+"(" +
|
||||
" `name` VARCHAR(32) NOT NULL," +
|
||||
" `type` VARCHAR(32) NOT NULL," +
|
||||
" `date` VARCHAR(10) NOT NULL" +
|
||||
") ENGINE = InnoDB";
|
||||
getSQL().openConnection();
|
||||
getSQL().updateSQL(s);
|
||||
getSQL().closeConnection();
|
||||
}
|
||||
|
||||
// 创建玩家数据表格
|
||||
public void createPlayerTableData(Player p){
|
||||
// MySQL.update("INSERT INTO "+ table+" VALUES ('" + p.getName() + "','" + p.getUniqueId() + "','默认','默认');");
|
||||
String set = "INSERT INTO "+table+" (`name`, `type`, `date`) VALUES ('%player%', '%type%', '%updata%')";
|
||||
Date date = new Date();
|
||||
getSQL().openConnection();
|
||||
getSQL().updateSQL(set.replace("%player%", p.getName())
|
||||
.replace("%type%", String.valueOf("COBBLESTONE"))
|
||||
.replace("%updata%", date.getMonth()+"."+date.getDate()));
|
||||
getSQL().closeConnection();
|
||||
Bukkit.getConsoleSender().sendMessage("§6[系统商店] §a玩家首次数据创建完成。");
|
||||
}
|
||||
|
||||
// 从数据库中获取玩家所有数据
|
||||
public String getPlayerData(Player p){
|
||||
String string = null;
|
||||
String select = "SELECT * FROM "+table+" WHERE name = '%playerName%'";
|
||||
try {
|
||||
getSQL().openConnection();
|
||||
ResultSet set = getSQL().querySQL(select.replace("%playerName%", p.getName()));
|
||||
if (set.next()) {
|
||||
String type = set.getString("type");
|
||||
String update = set.getString("date");
|
||||
Date date = new Date();
|
||||
if (update.equalsIgnoreCase(date.getMonth()+"."+date.getDate())) {
|
||||
string = type;
|
||||
} else {
|
||||
String updataType = Main.getDayRandomType();
|
||||
SavePlayerData(p,updataType);
|
||||
string = updataType;
|
||||
Bukkit.getConsoleSender().sendMessage("§6["+ Main.pluginName+"] §f玩家<"+p.getName()+">的特价商店已刷新.");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
getSQL().closeConnection();
|
||||
}
|
||||
return string;
|
||||
}
|
||||
|
||||
// 更新玩家数据
|
||||
public void SavePlayerData(Player player,String type){
|
||||
String set = "UPDATE `"+table+"` SET " +
|
||||
"`type` = '%type%'," +
|
||||
"`date` = '%updata%' WHERE `"+table+"`.`name` = '%player%'";
|
||||
getSQL().openConnection();
|
||||
Date date = new Date();
|
||||
String updata_time = date.getMonth()+"."+date.getDate();
|
||||
getSQL().updateSQL(set.replace("%player%", player.getName())
|
||||
.replace("%type%", String.valueOf(type))
|
||||
.replace("%updata%", updata_time));
|
||||
getSQL().closeConnection();
|
||||
}
|
||||
}
|
769
src/main/resources/ItemName.yml
Normal file
769
src/main/resources/ItemName.yml
Normal file
|
@ -0,0 +1,769 @@
|
|||
'STONE': 石头
|
||||
'STONE:1': 花岗岩
|
||||
'STONE:2': 磨制花岗岩
|
||||
'STONE:3': 闪长岩
|
||||
'STONE:4': 磨制闪长岩
|
||||
'STONE:5': 安山岩
|
||||
'STONE:6': 磨制安山岩
|
||||
'GRASS': 草方块
|
||||
'DIRT': 泥土
|
||||
'DIRT:1': 砂土
|
||||
'DIRT:2': 灰化土
|
||||
'COBBLESTONE': 圆石
|
||||
'WOOD': 橡木木板
|
||||
'WOOD:1': 云杉木板
|
||||
'WOOD:2': 白桦木板
|
||||
'WOOD:3': 丛林木板
|
||||
'WOOD:4': 金合欢木板
|
||||
'WOOD:5': 深色橡木木板
|
||||
'SAPLING': 橡树树苗
|
||||
'SAPLING:1': 云杉树苗
|
||||
'SAPLING:2': 白桦树苗
|
||||
'SAPLING:3': 丛林树苗
|
||||
'SAPLING:4': 金合欢树苗
|
||||
'SAPLING:5': 深色橡树树苗
|
||||
'BEDROCK': 基岩
|
||||
'WATER': 空气
|
||||
'STATIONARY_WATER': 空气
|
||||
'LAVA': 空气
|
||||
'STATIONARY_LAVA': 空气
|
||||
'SAND': 沙子
|
||||
'SAND:1': 红沙
|
||||
'GRAVEL': 沙砾
|
||||
'GOLD_ORE': 金矿石
|
||||
'IRON_ORE': 铁矿石
|
||||
'COAL_ORE': 煤矿石
|
||||
'LOG': 橡木
|
||||
'LOG:1': 云杉木
|
||||
'LOG:2': 白桦木
|
||||
'LOG:3': 丛林木
|
||||
'LOG:4': 金合欢木
|
||||
'LOG:5': 深色橡木
|
||||
'LEAVES': 橡树树叶
|
||||
'LEAVES:1': 云杉树叶
|
||||
'LEAVES:2': 白桦树叶
|
||||
'LEAVES:3': 丛林树叶
|
||||
'SPONGE': 海绵
|
||||
'SPONGE:1': 湿海绵
|
||||
'GLASS': 玻璃
|
||||
'LAPIS_ORE': 青金石矿石
|
||||
'LAPIS_BLOCK': 青金石块
|
||||
'DISPENSER': 发射器
|
||||
'SANDSTONE': 砂岩
|
||||
'SANDSTONE:1': 錾制砂岩
|
||||
'SANDSTONE:2': 平滑砂岩
|
||||
'NOTE_BLOCK': 音符盒
|
||||
'BED_BLOCK': 空气
|
||||
'POWERED_RAIL': 充能铁轨
|
||||
'DETECTOR_RAIL': 探测铁轨
|
||||
'PISTON_STICKY_BASE': 粘性活塞
|
||||
'WEB': 蜘蛛网
|
||||
'LONG_GRASS': 灌木
|
||||
'LONG_GRASS:1': 草
|
||||
'LONG_GRASS:2': 蕨
|
||||
'DEAD_BUSH': 枯死的灌木
|
||||
'PISTON_BASE': 活塞
|
||||
'PISTON_EXTENSION': 空气
|
||||
'WOOL': 白色羊毛
|
||||
'WOOL:1': 橙色羊毛
|
||||
'WOOL:2': 品红色羊毛
|
||||
'WOOL:3': 淡蓝色羊毛
|
||||
'WOOL:4': 黄色羊毛
|
||||
'WOOL:5': 黄绿色羊毛
|
||||
'WOOL:6': 粉红色羊毛
|
||||
'WOOL:7': 灰色羊毛
|
||||
'WOOL:8': 淡灰色羊毛
|
||||
'WOOL:9': 青色羊毛
|
||||
'WOOL:10': 紫色羊毛
|
||||
'WOOL:11': 蓝色羊毛
|
||||
'WOOL:12': 棕色羊毛
|
||||
'WOOL:13': 绿色羊毛
|
||||
'WOOL:14': 红色羊毛
|
||||
'WOOL:15': 黑色羊毛
|
||||
'PISTON_MOVING_PIECE': 空气
|
||||
'YELLOW_FLOWER': 蒲公英
|
||||
'RED_ROSE': 虞美人
|
||||
'RED_ROSE:1': 兰花
|
||||
'RED_ROSE:2': 绒球葱
|
||||
'RED_ROSE:3': 茜草花
|
||||
'RED_ROSE:4': 红色郁金香
|
||||
'RED_ROSE:5': 橙色郁金香
|
||||
'RED_ROSE:6': 白色郁金香
|
||||
'RED_ROSE:7': 粉红色郁金香
|
||||
'RED_ROSE:8': 滨菊
|
||||
'BROWN_MUSHROOM': 蘑菇
|
||||
'RED_MUSHROOM': 蘑菇
|
||||
'GOLD_BLOCK': 金块
|
||||
'IRON_BLOCK': 铁块
|
||||
'DOUBLE_STEP': 空气
|
||||
'STEP': 石台阶
|
||||
'STEP:1': 砂岩台阶
|
||||
'STEP:2': 木台阶
|
||||
'STEP:3': 圆石台阶
|
||||
'STEP:4': 砖台阶
|
||||
'STEP:5': 石砖台阶
|
||||
'STEP:6': 地狱砖台阶
|
||||
'STEP:7': 石英台阶
|
||||
'BRICK': 砖块
|
||||
'TNT': TNT
|
||||
'BOOKSHELF': 书架
|
||||
'MOSSY_COBBLESTONE': 苔石
|
||||
'OBSIDIAN': 黑曜石
|
||||
'TORCH': 火把
|
||||
'FIRE': 空气
|
||||
'MOB_SPAWNER': 刷怪箱
|
||||
'WOOD_STAIRS': 橡木楼梯
|
||||
'CHEST': 箱子
|
||||
'REDSTONE_WIRE': 空气
|
||||
'DIAMOND_ORE': 钻石矿石
|
||||
'DIAMOND_BLOCK': 钻石块
|
||||
'WORKBENCH': 工作台
|
||||
'CROPS': 空气
|
||||
'SOIL': 耕地
|
||||
'FURNACE': 熔炉
|
||||
'BURNING_FURNACE': 空气
|
||||
'SIGN_POST': 空气
|
||||
'WOODEN_DOOR': 空气
|
||||
'LADDER': 梯子
|
||||
'RAILS': 铁轨
|
||||
'COBBLESTONE_STAIRS': 圆石楼梯
|
||||
'WALL_SIGN': 空气
|
||||
'LEVER': 拉杆
|
||||
'STONE_PLATE': 石质压力板
|
||||
'IRON_DOOR_BLOCK': 空气
|
||||
'WOOD_PLATE': 木质压力板
|
||||
'REDSTONE_ORE': 红石矿石
|
||||
'GLOWING_REDSTONE_ORE': 空气
|
||||
'REDSTONE_TORCH_OFF': 空气
|
||||
'REDSTONE_TORCH_ON': 红石火把
|
||||
'STONE_BUTTON': 按钮
|
||||
'SNOW': 雪
|
||||
'ICE': 冰
|
||||
'SNOW_BLOCK': 雪
|
||||
'CACTUS': 仙人掌
|
||||
'CLAY': 粘土块
|
||||
'SUGAR_CANE_BLOCK': 空气
|
||||
'JUKEBOX': 唱片机
|
||||
'FENCE': 橡木栅栏
|
||||
'PUMPKIN': 南瓜
|
||||
'NETHERRACK': 地狱岩
|
||||
'SOUL_SAND': 灵魂沙
|
||||
'GLOWSTONE': 荧石
|
||||
'PORTAL': 空气
|
||||
'JACK_O_LANTERN': 南瓜灯
|
||||
'CAKE_BLOCK': 空气
|
||||
'DIODE_BLOCK_OFF': 空气
|
||||
'DIODE_BLOCK_ON': 空气
|
||||
'STAINED_GLASS': 白色染色玻璃
|
||||
'STAINED_GLASS:1': 橙色染色玻璃
|
||||
'STAINED_GLASS:2': 品红色染色玻璃
|
||||
'STAINED_GLASS:3': 淡蓝色染色玻璃
|
||||
'STAINED_GLASS:4': 黄色染色玻璃
|
||||
'STAINED_GLASS:5': 黄绿色染色玻璃
|
||||
'STAINED_GLASS:6': 粉红色染色玻璃
|
||||
'STAINED_GLASS:7': 灰色染色玻璃
|
||||
'STAINED_GLASS:8': 淡灰色染色玻璃
|
||||
'STAINED_GLASS:9': 青色染色玻璃
|
||||
'STAINED_GLASS:10': 紫色染色玻璃
|
||||
'STAINED_GLASS:11': 蓝色染色玻璃
|
||||
'STAINED_GLASS:12': 棕色染色玻璃
|
||||
'STAINED_GLASS:13': 绿色染色玻璃
|
||||
'STAINED_GLASS:14': 红色染色玻璃
|
||||
'STAINED_GLASS:15': 黑色染色玻璃
|
||||
'TRAP_DOOR': 活板门
|
||||
'MONSTER_EGGS': 石头怪物蛋
|
||||
'MONSTER_EGGS:1': 圆石怪物蛋
|
||||
'MONSTER_EGGS:2': 石砖怪物蛋
|
||||
'MONSTER_EGGS:3': 苔石砖怪物蛋
|
||||
'MONSTER_EGGS:4': 裂石砖怪物蛋
|
||||
'MONSTER_EGGS:5': 錾制石砖怪物蛋
|
||||
'SMOOTH_BRICK': 石砖
|
||||
'SMOOTH_BRICK:1': 苔石砖
|
||||
'SMOOTH_BRICK:2': 裂石砖
|
||||
'SMOOTH_BRICK:3': 錾制石砖
|
||||
'HUGE_MUSHROOM_1': 蘑菇
|
||||
'HUGE_MUSHROOM_2': 蘑菇
|
||||
'IRON_FENCE': 铁栏杆
|
||||
'THIN_GLASS': 玻璃板
|
||||
'MELON_BLOCK': 西瓜
|
||||
'PUMPKIN_STEM': 空气
|
||||
'MELON_STEM': 空气
|
||||
'VINE': 藤蔓
|
||||
'FENCE_GATE': 橡木栅栏门
|
||||
'BRICK_STAIRS': 砖楼梯
|
||||
'SMOOTH_STAIRS': 石砖楼梯
|
||||
'MYCEL': 菌丝
|
||||
'WATER_LILY': 睡莲
|
||||
'NETHER_BRICK': 地狱砖块
|
||||
'NETHER_FENCE': 地狱砖栅栏
|
||||
'NETHER_BRICK_STAIRS': 地狱砖楼梯
|
||||
'NETHER_WARTS': 空气
|
||||
'ENCHANTMENT_TABLE': 附魔台
|
||||
'BREWING_STAND': 空气
|
||||
'CAULDRON': 空气
|
||||
'ENDER_PORTAL': 空气
|
||||
'ENDER_PORTAL_FRAME': 末地传送门
|
||||
'ENDER_STONE': 末地石
|
||||
'DRAGON_EGG': 龙蛋
|
||||
'REDSTONE_LAMP_OFF': 红石灯
|
||||
'REDSTONE_LAMP_ON': 空气
|
||||
'WOOD_DOUBLE_STEP': 空气
|
||||
'WOOD_STEP': 橡木台阶
|
||||
'WOOD_STEP:1': 云杉台阶
|
||||
'WOOD_STEP:2': 桦木台阶
|
||||
'WOOD_STEP:3': 丛林台阶
|
||||
'WOOD_STEP:4': 金合欢木台阶
|
||||
'WOOD_STEP:5': 深色橡木台阶
|
||||
'COCOA': 空气
|
||||
'SANDSTONE_STAIRS': 砂岩楼梯
|
||||
'EMERALD_ORE': 绿宝石矿石
|
||||
'ENDER_CHEST': 末影箱
|
||||
'TRIPWIRE_HOOK': 绊线钩
|
||||
'TRIPWIRE': 空气
|
||||
'EMERALD_BLOCK': 绿宝石块
|
||||
'SPRUCE_WOOD_STAIRS': 云杉木楼梯
|
||||
'BIRCH_WOOD_STAIRS': 桦木楼梯
|
||||
'JUNGLE_WOOD_STAIRS': 丛林木楼梯
|
||||
'COMMAND': 命令方块
|
||||
'BEACON': 信标
|
||||
'COBBLE_WALL': 圆石墙
|
||||
'COBBLE_WALL:1': 苔石墙
|
||||
'FLOWER_POT': 空气
|
||||
'CARROT': 空气
|
||||
'POTATO': 空气
|
||||
'WOOD_BUTTON': 按钮
|
||||
'SKULL': 空气
|
||||
'ANVIL': 铁砧
|
||||
'ANVIL:1': 轻微损坏的铁砧
|
||||
'ANVIL:2': 严重损坏的铁砧
|
||||
'TRAPPED_CHEST': 陷阱箱
|
||||
'GOLD_PLATE': 测重压力板(轻质)
|
||||
'IRON_PLATE': 测重压力板(重质)
|
||||
'REDSTONE_COMPARATOR_OFF': 空气
|
||||
'REDSTONE_COMPARATOR_ON': 空气
|
||||
'DAYLIGHT_DETECTOR': 阳光传感器
|
||||
'REDSTONE_BLOCK': 红石块
|
||||
'QUARTZ_ORE': 下界石英矿石
|
||||
'HOPPER': 漏斗
|
||||
'QUARTZ_BLOCK': 石英块
|
||||
'QUARTZ_BLOCK:1': 錾制石英块
|
||||
'QUARTZ_BLOCK:2': 竖纹石英块
|
||||
'QUARTZ_STAIRS': 石英楼梯
|
||||
'ACTIVATOR_RAIL': 激活铁轨
|
||||
'DROPPER': 投掷器
|
||||
'STAINED_CLAY': 白色陶瓦
|
||||
'STAINED_CLAY:1': 橙色陶瓦
|
||||
'STAINED_CLAY:2': 品红色陶瓦
|
||||
'STAINED_CLAY:3': 淡蓝色陶瓦
|
||||
'STAINED_CLAY:4': 黄色陶瓦
|
||||
'STAINED_CLAY:5': 黄绿色陶瓦
|
||||
'STAINED_CLAY:6': 粉红色陶瓦
|
||||
'STAINED_CLAY:7': 灰色陶瓦
|
||||
'STAINED_CLAY:8': 淡灰色陶瓦
|
||||
'STAINED_CLAY:9': 青色陶瓦
|
||||
'STAINED_CLAY:10': 紫色陶瓦
|
||||
'STAINED_CLAY:11': 蓝色陶瓦
|
||||
'STAINED_CLAY:12': 棕色陶瓦
|
||||
'STAINED_CLAY:13': 绿色陶瓦
|
||||
'STAINED_CLAY:14': 红色陶瓦
|
||||
'STAINED_CLAY:15': 黑色陶瓦
|
||||
'STAINED_GLASS_PANE': 白色染色玻璃板
|
||||
'STAINED_GLASS_PANE:1': 橙色染色玻璃板
|
||||
'STAINED_GLASS_PANE:2': 品红色染色玻璃板
|
||||
'STAINED_GLASS_PANE:3': 淡蓝色染色玻璃板
|
||||
'STAINED_GLASS_PANE:4': 黄色染色玻璃板
|
||||
'STAINED_GLASS_PANE:5': 黄绿色染色玻璃板
|
||||
'STAINED_GLASS_PANE:6': 粉红色染色玻璃板
|
||||
'STAINED_GLASS_PANE:7': 灰色染色玻璃板
|
||||
'STAINED_GLASS_PANE:8': 淡灰色染色玻璃板
|
||||
'STAINED_GLASS_PANE:9': 青色染色玻璃板
|
||||
'STAINED_GLASS_PANE:10': 紫色染色玻璃板
|
||||
'STAINED_GLASS_PANE:11': 蓝色染色玻璃板
|
||||
'STAINED_GLASS_PANE:12': 棕色染色玻璃板
|
||||
'STAINED_GLASS_PANE:13': 绿色染色玻璃板
|
||||
'STAINED_GLASS_PANE:14': 红色染色玻璃板
|
||||
'STAINED_GLASS_PANE:15': 黑色染色玻璃板
|
||||
'LEAVES_2': 金合欢树叶
|
||||
'LEAVES_2:1': 深色橡树树叶
|
||||
'LEAVES_2:2': 橡树树叶
|
||||
'LEAVES_2:3': 橡树树叶
|
||||
'LOG_2': 金合欢木
|
||||
'LOG_2:1': 深色橡木
|
||||
'LOG_2:2': 橡木
|
||||
'LOG_2:3': 橡木
|
||||
'LOG_2:4': 橡木
|
||||
'LOG_2:5': 橡木
|
||||
'LOG_2:6': 橡木
|
||||
'LOG_2:7': 橡木
|
||||
'LOG_2:8': 橡木
|
||||
'LOG_2:9': 橡木
|
||||
'LOG_2:10': 橡木
|
||||
'LOG_2:11': 橡木
|
||||
'LOG_2:12': 橡木
|
||||
'LOG_2:13': 橡木
|
||||
'LOG_2:14': 橡木
|
||||
'LOG_2:15': 橡木
|
||||
'ACACIA_STAIRS': 金合欢木楼梯
|
||||
'DARK_OAK_STAIRS': 深色橡木楼梯
|
||||
'SLIME_BLOCK': 粘液块
|
||||
'BARRIER': 屏障
|
||||
'IRON_TRAPDOOR': 铁活板门
|
||||
'PRISMARINE': 海晶石
|
||||
'PRISMARINE:1': 海晶石砖
|
||||
'PRISMARINE:2': 暗海晶石
|
||||
'SEA_LANTERN': 海晶灯
|
||||
'HAY_BLOCK': 干草块
|
||||
'CARPET': 白色地毯
|
||||
'CARPET:1': 橙色地毯
|
||||
'CARPET:2': 品红色地毯
|
||||
'CARPET:3': 淡蓝色地毯
|
||||
'CARPET:4': 黄色地毯
|
||||
'CARPET:5': 黄绿色地毯
|
||||
'CARPET:6': 粉红色地毯
|
||||
'CARPET:7': 灰色地毯
|
||||
'CARPET:8': 淡灰色地毯
|
||||
'CARPET:9': 青色地毯
|
||||
'CARPET:10': 紫色地毯
|
||||
'CARPET:11': 蓝色地毯
|
||||
'CARPET:12': 棕色地毯
|
||||
'CARPET:13': 绿色地毯
|
||||
'CARPET:14': 红色地毯
|
||||
'CARPET:15': 黑色地毯
|
||||
'HARD_CLAY': 陶瓦
|
||||
'COAL_BLOCK': 煤炭块
|
||||
'PACKED_ICE': 浮冰
|
||||
'DOUBLE_PLANT': 向日葵
|
||||
'DOUBLE_PLANT:1': 丁香
|
||||
'DOUBLE_PLANT:2': 高草丛
|
||||
'DOUBLE_PLANT:3': 大型蕨
|
||||
'DOUBLE_PLANT:4': 玫瑰丛
|
||||
'DOUBLE_PLANT:5': 牡丹
|
||||
'STANDING_BANNER': 空气
|
||||
'WALL_BANNER': 空气
|
||||
'DAYLIGHT_DETECTOR_INVERTED': 空气
|
||||
'RED_SANDSTONE': 红砂岩
|
||||
'RED_SANDSTONE:1': 錾制红砂岩
|
||||
'RED_SANDSTONE:2': 平滑红砂岩
|
||||
'RED_SANDSTONE_STAIRS': 红砂岩楼梯
|
||||
'DOUBLE_STONE_SLAB2': 空气
|
||||
'STONE_SLAB2': 红砂岩台阶
|
||||
'SPRUCE_FENCE_GATE': 云杉木栅栏门
|
||||
'BIRCH_FENCE_GATE': 白桦木栅栏门
|
||||
'JUNGLE_FENCE_GATE': 丛林木栅栏门
|
||||
'DARK_OAK_FENCE_GATE': 深色橡木栅栏门
|
||||
'ACACIA_FENCE_GATE': 金合欢栅栏门
|
||||
'SPRUCE_FENCE': 云杉木栅栏
|
||||
'BIRCH_FENCE': 白桦木栅栏
|
||||
'JUNGLE_FENCE': 丛林木栅栏
|
||||
'DARK_OAK_FENCE': 深色橡木栅栏
|
||||
'ACACIA_FENCE': 金合欢栅栏
|
||||
'SPRUCE_DOOR': 空气
|
||||
'BIRCH_DOOR': 空气
|
||||
'JUNGLE_DOOR': 空气
|
||||
'ACACIA_DOOR': 空气
|
||||
'DARK_OAK_DOOR': 空气
|
||||
'END_ROD': 末地烛
|
||||
'CHORUS_PLANT': 紫颂植物
|
||||
'CHORUS_FLOWER': 紫颂花
|
||||
'PURPUR_BLOCK': 紫珀块
|
||||
'PURPUR_PILLAR': 竖纹紫珀块
|
||||
'PURPUR_STAIRS': 紫珀楼梯
|
||||
'PURPUR_DOUBLE_SLAB': 空气
|
||||
'PURPUR_SLAB': 紫珀台阶
|
||||
'END_BRICKS': 末地石砖
|
||||
'BEETROOT_BLOCK': 空气
|
||||
'GRASS_PATH': 草径
|
||||
'END_GATEWAY': 空气
|
||||
'COMMAND_REPEATING': 循环型命令方块
|
||||
'COMMAND_CHAIN': 连锁型命令方块
|
||||
'FROSTED_ICE': 空气
|
||||
'MAGMA': 岩浆块
|
||||
'NETHER_WART_BLOCK': 地狱疣块
|
||||
'RED_NETHER_BRICK': 红色地狱砖
|
||||
'BONE_BLOCK': 骨块
|
||||
'STRUCTURE_VOID': 结构空位
|
||||
'OBSERVER': 侦测器
|
||||
'WHITE_SHULKER_BOX': 白色潜影盒
|
||||
'ORANGE_SHULKER_BOX': 橙色潜影盒
|
||||
'MAGENTA_SHULKER_BOX': 品红色潜影盒
|
||||
'LIGHT_BLUE_SHULKER_BOX': 淡蓝色潜影盒
|
||||
'YELLOW_SHULKER_BOX': 黄色潜影盒
|
||||
'LIME_SHULKER_BOX': 黄绿色潜影盒
|
||||
'PINK_SHULKER_BOX': 粉色潜影盒
|
||||
'GRAY_SHULKER_BOX': 灰色潜影盒
|
||||
'SILVER_SHULKER_BOX': 淡灰色潜影盒
|
||||
'CYAN_SHULKER_BOX': 青色潜影盒
|
||||
'PURPLE_SHULKER_BOX': 紫色潜影盒
|
||||
'BLUE_SHULKER_BOX': 蓝色潜影盒
|
||||
'BROWN_SHULKER_BOX': 棕色潜影盒
|
||||
'GREEN_SHULKER_BOX': 绿色潜影盒
|
||||
'RED_SHULKER_BOX': 红色潜影盒
|
||||
'BLACK_SHULKER_BOX': 黑色潜影盒
|
||||
'WHITE_GLAZED_TERRACOTTA': 白色带釉陶瓦
|
||||
'ORANGE_GLAZED_TERRACOTTA': 橙色带釉陶瓦
|
||||
'MAGENTA_GLAZED_TERRACOTTA': 品红色带釉陶瓦
|
||||
'LIGHT_BLUE_GLAZED_TERRACOTTA': 淡蓝色带釉陶瓦
|
||||
'YELLOW_GLAZED_TERRACOTTA': 黄色带釉陶瓦
|
||||
'LIME_GLAZED_TERRACOTTA': 黄绿色带釉陶瓦
|
||||
'PINK_GLAZED_TERRACOTTA': 粉红色带釉陶瓦
|
||||
'GRAY_GLAZED_TERRACOTTA': 灰色带釉陶瓦
|
||||
'SILVER_GLAZED_TERRACOTTA': 淡灰色带釉陶瓦
|
||||
'CYAN_GLAZED_TERRACOTTA': 青色带釉陶瓦
|
||||
'PURPLE_GLAZED_TERRACOTTA': 紫色带釉陶瓦
|
||||
'BLUE_GLAZED_TERRACOTTA': 蓝色带釉陶瓦
|
||||
'BROWN_GLAZED_TERRACOTTA': 棕色带釉陶瓦
|
||||
'GREEN_GLAZED_TERRACOTTA': 绿色带釉陶瓦
|
||||
'RED_GLAZED_TERRACOTTA': 红色带釉陶瓦
|
||||
'BLACK_GLAZED_TERRACOTTA': 黑色带釉陶瓦
|
||||
'CONCRETE': 白色混凝土
|
||||
'CONCRETE:1': 橙色混凝土
|
||||
'CONCRETE:2': 品红色混凝土
|
||||
'CONCRETE:3': 淡蓝色混凝土
|
||||
'CONCRETE:4': 黄色混凝土
|
||||
'CONCRETE:5': 黄绿色混凝土
|
||||
'CONCRETE:6': 粉红色混凝土
|
||||
'CONCRETE:7': 灰色混凝土
|
||||
'CONCRETE:8': 淡灰色混凝土
|
||||
'CONCRETE:9': 青色混凝土
|
||||
'CONCRETE:10': 紫色混凝土
|
||||
'CONCRETE:11': 蓝色混凝土
|
||||
'CONCRETE:12': 棕色混凝土
|
||||
'CONCRETE:13': 绿色混凝土
|
||||
'CONCRETE:14': 红色混凝土
|
||||
'CONCRETE:15': 黑色混凝土
|
||||
'CONCRETE_POWDER': 白色混凝土粉末
|
||||
'CONCRETE_POWDER:1': 橙色混凝土粉末
|
||||
'CONCRETE_POWDER:2': 品红色混凝土粉末
|
||||
'CONCRETE_POWDER:3': 淡蓝色混凝土粉末
|
||||
'CONCRETE_POWDER:4': 黄色混凝土粉末
|
||||
'CONCRETE_POWDER:5': 黄绿色混凝土粉末
|
||||
'CONCRETE_POWDER:6': 粉红色混凝土粉末
|
||||
'CONCRETE_POWDER:7': 灰色混凝土粉末
|
||||
'CONCRETE_POWDER:8': 淡灰色混凝土粉末
|
||||
'CONCRETE_POWDER:9': 青色混凝土粉末
|
||||
'CONCRETE_POWDER:10': 紫色混凝土粉末
|
||||
'CONCRETE_POWDER:11': 蓝色混凝土粉末
|
||||
'CONCRETE_POWDER:12': 棕色混凝土粉末
|
||||
'CONCRETE_POWDER:13': 绿色混凝土粉末
|
||||
'CONCRETE_POWDER:14': 红色混凝土粉末
|
||||
'CONCRETE_POWDER:15': 黑色混凝土粉末
|
||||
'STRUCTURE_BLOCK': 结构方块
|
||||
'IRON_SPADE': 铁锹
|
||||
'IRON_PICKAXE': 铁镐
|
||||
'IRON_AXE': 铁斧
|
||||
'FLINT_AND_STEEL': 打火石
|
||||
'APPLE': 苹果
|
||||
'BOW': 弓
|
||||
'ARROW': 箭
|
||||
'COAL': 煤炭
|
||||
'COAL:1': 木炭
|
||||
'DIAMOND': 钻石
|
||||
'IRON_INGOT': 铁锭
|
||||
'GOLD_INGOT': 金锭
|
||||
'IRON_SWORD': 铁剑
|
||||
'WOOD_SWORD': 木剑
|
||||
'WOOD_SPADE': 木锹
|
||||
'WOOD_PICKAXE': 木镐
|
||||
'WOOD_AXE': 木斧
|
||||
'STONE_SWORD': 石剑
|
||||
'STONE_SPADE': 石锹
|
||||
'STONE_PICKAXE': 石镐
|
||||
'STONE_AXE': 石斧
|
||||
'DIAMOND_SWORD': 钻石剑
|
||||
'DIAMOND_SPADE': 钻石锹
|
||||
'DIAMOND_PICKAXE': 钻石镐
|
||||
'DIAMOND_AXE': 钻石斧
|
||||
'STICK': 木棍
|
||||
'BOWL': 碗
|
||||
'MUSHROOM_SOUP': 蘑菇煲
|
||||
'GOLD_SWORD': 金剑
|
||||
'GOLD_SPADE': 金锹
|
||||
'GOLD_PICKAXE': 金镐
|
||||
'GOLD_AXE': 金斧
|
||||
'STRING': 线
|
||||
'FEATHER': 羽毛
|
||||
'SULPHUR': 火药
|
||||
'WOOD_HOE': 木锄
|
||||
'STONE_HOE': 石锄
|
||||
'IRON_HOE': 铁锄
|
||||
'DIAMOND_HOE': 钻石锄
|
||||
'GOLD_HOE': 金锄
|
||||
'SEEDS': 小麦种子
|
||||
'WHEAT': 小麦
|
||||
'BREAD': 面包
|
||||
'LEATHER_HELMET': 皮革帽子
|
||||
'LEATHER_CHESTPLATE': 皮革外套
|
||||
'LEATHER_LEGGINGS': 皮革裤子
|
||||
'LEATHER_BOOTS': 皮革靴子
|
||||
'CHAINMAIL_HELMET': 锁链头盔
|
||||
'CHAINMAIL_CHESTPLATE': 锁链胸甲
|
||||
'CHAINMAIL_LEGGINGS': 锁链护腿
|
||||
'CHAINMAIL_BOOTS': 锁链靴子
|
||||
'IRON_HELMET': 铁头盔
|
||||
'IRON_CHESTPLATE': 铁胸甲
|
||||
'IRON_LEGGINGS': 铁护腿
|
||||
'IRON_BOOTS': 铁靴子
|
||||
'DIAMOND_HELMET': 钻石头盔
|
||||
'DIAMOND_CHESTPLATE': 钻石胸甲
|
||||
'DIAMOND_LEGGINGS': 钻石护腿
|
||||
'DIAMOND_BOOTS': 钻石靴子
|
||||
'GOLD_HELMET': 金头盔
|
||||
'GOLD_CHESTPLATE': 金胸甲
|
||||
'GOLD_LEGGINGS': 金护腿
|
||||
'GOLD_BOOTS': 金靴子
|
||||
'FLINT': 燧石
|
||||
'PORK': 生猪排
|
||||
'GRILLED_PORK': 熟猪排
|
||||
'PAINTING': 画
|
||||
'GOLDEN_APPLE': 金苹果
|
||||
'GOLDEN_APPLE:1': 附魔金苹果
|
||||
'WOOD_DOOR': 橡木门
|
||||
'BUCKET': 桶
|
||||
'WATER_BUCKET': 水桶
|
||||
'LAVA_BUCKET': 熔岩桶
|
||||
'MINECART': 矿车
|
||||
'SADDLE': 鞍
|
||||
'IRON_DOOR': 铁门
|
||||
'REDSTONE': 红石
|
||||
'SNOW_BALL': 雪球
|
||||
'BOAT': 橡木船
|
||||
'LEATHER': 皮革
|
||||
'MILK_BUCKET': 牛奶
|
||||
'CLAY_BRICK': 红砖
|
||||
'CLAY_BALL': 粘土
|
||||
'SUGAR_CANE': 甘蔗
|
||||
'PAPER': 纸
|
||||
'BOOK': 书
|
||||
'SLIME_BALL': 粘液球
|
||||
'STORAGE_MINECART': 运输矿车
|
||||
'POWERED_MINECART': 动力矿车
|
||||
'EGG': 鸡蛋
|
||||
'COMPASS': 指南针
|
||||
'FISHING_ROD': 钓鱼竿
|
||||
'WATCH': 钟
|
||||
'GLOWSTONE_DUST': 荧石粉
|
||||
'RAW_FISH': 生鱼
|
||||
'RAW_FISH:1': 生鲑鱼
|
||||
'RAW_FISH:2': 小丑鱼
|
||||
'RAW_FISH:3': 河豚
|
||||
'COOKED_FISH': 熟鱼
|
||||
'COOKED_FISH:1': 熟鲑鱼
|
||||
'INK_SACK': 墨囊
|
||||
'INK_SACK:1': 玫瑰红
|
||||
'INK_SACK:2': 仙人掌绿
|
||||
'INK_SACK:3': 可可豆
|
||||
'INK_SACK:4': 青金石
|
||||
'INK_SACK:5': 紫色染料
|
||||
'INK_SACK:6': 青色染料
|
||||
'INK_SACK:7': 淡灰色染料
|
||||
'INK_SACK:8': 灰色染料
|
||||
'INK_SACK:9': 粉红色染料
|
||||
'INK_SACK:10': 黄绿色染料
|
||||
'INK_SACK:11': 蒲公英黄
|
||||
'INK_SACK:12': 淡蓝色染料
|
||||
'INK_SACK:13': 品红色染料
|
||||
'INK_SACK:14': 橙色染料
|
||||
'INK_SACK:15': 骨粉
|
||||
'BONE': 骨头
|
||||
'SUGAR': 糖
|
||||
'CAKE': 蛋糕
|
||||
'BED': 白色床
|
||||
'DIODE': 红石中继器
|
||||
'COOKIE': 曲奇
|
||||
'MAP': 地图
|
||||
'SHEARS': 剪刀
|
||||
'MELON': 西瓜
|
||||
'PUMPKIN_SEEDS': 南瓜种子
|
||||
'MELON_SEEDS': 西瓜种子
|
||||
'RAW_BEEF': 生牛肉
|
||||
'COOKED_BEEF': 牛排
|
||||
'RAW_CHICKEN': 生鸡肉
|
||||
'COOKED_CHICKEN': 熟鸡肉
|
||||
'ROTTEN_FLESH': 腐肉
|
||||
'ENDER_PEARL': 末影珍珠
|
||||
'BLAZE_ROD': 烈焰棒
|
||||
'GHAST_TEAR': 恶魂之泪
|
||||
'GOLD_NUGGET': 金粒
|
||||
'NETHER_STALK': 地狱疣
|
||||
'POTION:WATER': 水瓶
|
||||
'POTION:MUNDANE': 平凡的药水
|
||||
'POTION:THICK': 浓稠的药水
|
||||
'POTION:AWKWARD': 粗制的药水
|
||||
'POTION:NIGHT_VISION': 夜视药水
|
||||
'POTION:INVISIBILITY': 隐身药水
|
||||
'POTION:JUMP': 跳跃药水
|
||||
'POTION:FIRE_RESISTANCE': 抗火药水
|
||||
'POTION:SPEED': 迅捷药水
|
||||
'POTION:SLOWNESS': 迟缓药水
|
||||
'POTION:WATER_BREATHING': 水肺药水
|
||||
'POTION:INSTANT_HEAL': 治疗药水
|
||||
'POTION:INSTANT_DAMAGE': 伤害药水
|
||||
'POTION:POISON': 剧毒药水
|
||||
'POTION:REGEN': 再生药水
|
||||
'POTION:STRENGTH': 力量药水
|
||||
'POTION:WEAKNESS': 虚弱药水
|
||||
'POTION:LUCK': 幸运药水
|
||||
'GLASS_BOTTLE': 玻璃瓶
|
||||
'SPIDER_EYE': 蜘蛛眼
|
||||
'FERMENTED_SPIDER_EYE': 发酵蛛眼
|
||||
'BLAZE_POWDER': 烈焰粉
|
||||
'MAGMA_CREAM': 岩浆膏
|
||||
'BREWING_STAND_ITEM': 酿造台
|
||||
'CAULDRON_ITEM': 炼药锅
|
||||
'EYE_OF_ENDER': 末影之眼
|
||||
'SPECKLED_MELON': 闪烁的西瓜
|
||||
'MONSTER_EGG': 怪物蛋
|
||||
'EXP_BOTTLE': 附魔之瓶
|
||||
'FIREBALL': 火焰弹
|
||||
'BOOK_AND_QUILL': 书与笔
|
||||
'WRITTEN_BOOK': 成书
|
||||
'EMERALD': 绿宝石
|
||||
'ITEM_FRAME': 物品展示框
|
||||
'FLOWER_POT_ITEM': 花盆
|
||||
'CARROT_ITEM': 胡萝卜
|
||||
'POTATO_ITEM': 马铃薯
|
||||
'BAKED_POTATO': 烤马铃薯
|
||||
'POISONOUS_POTATO': 毒马铃薯
|
||||
'EMPTY_MAP': 空地图
|
||||
'GOLDEN_CARROT': 金胡萝卜
|
||||
'SKULL_ITEM': 骷髅头颅
|
||||
'SKULL_ITEM:1': 凋零骷髅头颅
|
||||
'SKULL_ITEM:2': 僵尸的头
|
||||
'SKULL_ITEM:3': 头
|
||||
'SKULL_ITEM:4': 爬行者的头
|
||||
'SKULL_ITEM:5': 龙首
|
||||
'CARROT_STICK': 胡萝卜钓竿
|
||||
'NETHER_STAR': 下界之星
|
||||
'PUMPKIN_PIE': 南瓜派
|
||||
'FIREWORK': 烟花火箭
|
||||
'FIREWORK_CHARGE': 烟火之星
|
||||
'ENCHANTED_BOOK': 附魔书
|
||||
'REDSTONE_COMPARATOR': 红石比较器
|
||||
'NETHER_BRICK_ITEM': 地狱砖
|
||||
'QUARTZ': 下界石英
|
||||
'EXPLOSIVE_MINECART': TNT矿车
|
||||
'HOPPER_MINECART': 漏斗矿车
|
||||
'PRISMARINE_SHARD': 海晶碎片
|
||||
'PRISMARINE_CRYSTALS': 海晶砂粒
|
||||
'RABBIT': 生兔肉
|
||||
'COOKED_RABBIT': 熟兔肉
|
||||
'RABBIT_STEW': 兔肉煲
|
||||
'RABBIT_FOOT': 兔子脚
|
||||
'RABBIT_HIDE': 兔子皮
|
||||
'ARMOR_STAND': 盔甲架
|
||||
'IRON_BARDING': 铁马铠
|
||||
'GOLD_BARDING': 金马铠
|
||||
'DIAMOND_BARDING': 钻石马铠
|
||||
'LEASH': 拴绳
|
||||
'NAME_TAG': 命名牌
|
||||
'COMMAND_MINECART': 命令方块矿车
|
||||
'MUTTON': 生羊肉
|
||||
'COOKED_MUTTON': 熟羊肉
|
||||
'BANNER': 黑色旗帜
|
||||
'BANNER:1': 红色旗帜
|
||||
'BANNER:2': 绿色旗帜
|
||||
'BANNER:3': 棕色旗帜
|
||||
'BANNER:4': 蓝色旗帜
|
||||
'BANNER:5': 紫色旗帜
|
||||
'BANNER:6': 青色旗帜
|
||||
'BANNER:7': 淡灰色旗帜
|
||||
'BANNER:8': 灰色旗帜
|
||||
'BANNER:9': 粉红色旗帜
|
||||
'BANNER:10': 黄绿色旗帜
|
||||
'BANNER:11': 黄色旗帜
|
||||
'BANNER:12': 淡蓝色旗帜
|
||||
'BANNER:13': 品红色旗帜
|
||||
'BANNER:14': 橙色旗帜
|
||||
'BANNER:15': 白色旗帜
|
||||
'END_CRYSTAL': 末影水晶
|
||||
'SPRUCE_DOOR_ITEM': 云杉木门
|
||||
'BIRCH_DOOR_ITEM': 白桦木门
|
||||
'JUNGLE_DOOR_ITEM': 丛林木门
|
||||
'ACACIA_DOOR_ITEM': 金合欢木门
|
||||
'DARK_OAK_DOOR_ITEM': 深色橡木门
|
||||
'CHORUS_FRUIT': 紫颂果
|
||||
'CHORUS_FRUIT_POPPED': 爆裂紫颂果
|
||||
'BEETROOT': 甜菜根
|
||||
'BEETROOT_SEEDS': 甜菜种子
|
||||
'BEETROOT_SOUP': 甜菜汤
|
||||
'DRAGONS_BREATH': 龙息
|
||||
'SPLASH_POTION:WATER': 喷溅型水瓶
|
||||
'SPLASH_POTION:MUNDANE': 喷溅型平凡的药水
|
||||
'SPLASH_POTION:THICK': 喷溅型浓稠的药水
|
||||
'SPLASH_POTION:AWKWARD': 喷溅型粗制药水
|
||||
'SPLASH_POTION:NIGHT_VISION': 喷溅型夜视药水
|
||||
'SPLASH_POTION:INVISIBILITY': 喷溅型隐身药水
|
||||
'SPLASH_POTION:JUMP': 喷溅型跳跃药水
|
||||
'SPLASH_POTION:FIRE_RESISTANCE': 喷溅型抗火药水
|
||||
'SPLASH_POTION:SPEED': 喷溅型迅捷药水
|
||||
'SPLASH_POTION:SLOWNESS': 喷溅型迟缓药水
|
||||
'SPLASH_POTION:WATER_BREATHING': 喷溅型水肺药水
|
||||
'SPLASH_POTION:INSTANT_HEAL': 喷溅型治疗药水
|
||||
'SPLASH_POTION:INSTANT_DAMAGE': 喷溅型伤害药水
|
||||
'SPLASH_POTION:POISON': 喷溅型剧毒药水
|
||||
'SPLASH_POTION:REGEN': 喷溅型再生药水
|
||||
'SPLASH_POTION:STRENGTH': 喷溅型力量药水
|
||||
'SPLASH_POTION:WEAKNESS': 喷溅型虚弱药水
|
||||
'SPLASH_POTION:LUCK': 喷溅型幸运药水
|
||||
'SPECTRAL_ARROW': 光灵箭
|
||||
'TIPPED_ARROW:UNCRAFTABLE': 喷溅之箭
|
||||
'TIPPED_ARROW:WATER': 喷溅之箭
|
||||
'TIPPED_ARROW:MUNDANE': 药箭
|
||||
'TIPPED_ARROW:THICK': 药箭
|
||||
'TIPPED_ARROW:AWKWARD': 药箭
|
||||
'TIPPED_ARROW:NIGHT_VISION': 夜视之箭
|
||||
'TIPPED_ARROW:INVISIBILITY': 隐身之箭
|
||||
'TIPPED_ARROW:JUMP': 跳跃之箭
|
||||
'TIPPED_ARROW:FIRE_RESISTANCE': 抗火之箭
|
||||
'TIPPED_ARROW:SPEED': 迅捷之箭
|
||||
'TIPPED_ARROW:SLOWNESS': 迟缓之箭
|
||||
'TIPPED_ARROW:WATER_BREATHING': 水肺之箭
|
||||
'TIPPED_ARROW:INSTANT_HEAL': 治疗之箭
|
||||
'TIPPED_ARROW:INSTANT_DAMAGE': 伤害之箭
|
||||
'TIPPED_ARROW:REGEN': 再生之箭
|
||||
'TIPPED_ARROW:WEAKNESS': 虚弱之箭
|
||||
'TIPPED_ARROW:POISON': 剧毒之箭
|
||||
'TIPPED_ARROW:STRENGTH': 力量之箭
|
||||
'TIPPED_ARROW:LUCK': 幸运之箭
|
||||
'LINGERING_POTION:WATER': 滞留型水瓶
|
||||
'LINGERING_POTION:MUNDANE': 滞留型平凡的药水
|
||||
'LINGERING_POTION:THICK': 滞留型浓稠的药水
|
||||
'LINGERING_POTION:AWKWARD': 滞留型粗制药水
|
||||
'LINGERING_POTION:NIGHT_VISION': 滞留型夜视药水
|
||||
'LINGERING_POTION:INVISIBILITY': 滞留型隐身药水
|
||||
'LINGERING_POTION:JUMP': 滞留型跳跃药水
|
||||
'LINGERING_POTION:FIRE_RESISTANCE': 滞留型抗火药水
|
||||
'LINGERING_POTION:SPEED': 滞留型迅捷药水
|
||||
'LINGERING_POTION:SLOWNESS': 滞留型迟缓药水
|
||||
'LINGERING_POTION:WATER_BREATHING': 滞留型水肺药水
|
||||
'LINGERING_POTION:INSTANT_HEAL': 滞留型治疗药水
|
||||
'LINGERING_POTION:INSTANT_DAMAGE': 滞留型伤害药水
|
||||
'LINGERING_POTION:POISON': 滞留型剧毒药水
|
||||
'LINGERING_POTION:REGEN': 滞留型再生药水
|
||||
'LINGERING_POTION:STRENGTH': 滞留型力量药水
|
||||
'LINGERING_POTION:WEAKNESS': 滞留型虚弱药水
|
||||
'LINGERING_POTION:LUCK': 滞留型幸运药水
|
||||
'SHIELD': 盾牌
|
||||
'ELYTRA': 鞘翅
|
||||
'BOAT_SPRUCE': 云杉木船
|
||||
'BOAT_BIRCH': 桦木船
|
||||
'BOAT_JUNGLE': 丛林木船
|
||||
'BOAT_ACACIA': 金合欢木船
|
||||
'BOAT_DARK_OAK': 深色橡木船
|
||||
'TOTEM': 不死图腾
|
||||
'SHULKER_SHELL': 潜影壳
|
||||
'IRON_NUGGET': 铁粒
|
||||
'KNOWLEDGE_BOOK': 知识之书
|
||||
'GOLD_RECORD': 音乐唱片
|
||||
'GREEN_RECORD': 音乐唱片
|
||||
'RECORD_3': 音乐唱片
|
||||
'RECORD_4': 音乐唱片
|
||||
'RECORD_5': 音乐唱片
|
||||
'RECORD_6': 音乐唱片
|
||||
'RECORD_7': 音乐唱片
|
||||
'RECORD_8': 音乐唱片
|
||||
'RECORD_9': 音乐唱片
|
||||
'RECORD_10': 音乐唱片
|
||||
'RECORD_11': 音乐唱片
|
||||
'RECORD_12': 音乐唱片
|
||||
'SIGN': 木牌
|
0
src/main/resources/Log.yml
Normal file
0
src/main/resources/Log.yml
Normal file
1
src/main/resources/config.yml
Normal file
1
src/main/resources/config.yml
Normal file
|
@ -0,0 +1 @@
|
|||
BuyShop: {}
|
7
src/main/resources/plugin.yml
Normal file
7
src/main/resources/plugin.yml
Normal file
|
@ -0,0 +1,7 @@
|
|||
name: DemonSystemShop
|
||||
main: me.Demon.DemonSystemShop.Main
|
||||
version: 1.0.7
|
||||
depend:
|
||||
- DemonMySql
|
||||
commands:
|
||||
systemshop:
|
Loading…
Reference in New Issue
Block a user