1
mirror of https://github.com/CarmJos/UltraDepository.git synced 2024-09-19 19:55:45 +00:00

完成背包物品配置读取

This commit is contained in:
Carm Jos 2021-12-29 00:20:49 +08:00
parent 3ca791a731
commit 10ca626304
3 changed files with 52 additions and 14 deletions

View File

@ -19,7 +19,6 @@ gui:
items:
"DIAMOND":
original: true #只允许无任何特殊属性的物品被收入
slot: 5
price: 10
limit: 100

View File

@ -5,6 +5,7 @@ import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@ -65,19 +66,26 @@ public class Depository {
}
public static Depository loadFrom(String identifier, FileConfiguration configuration) {
String name = configuration.getString("name");
GUIConfiguration guiConfiguration = GUIConfiguration.readConfiguration(configuration.getConfigurationSection("gui"));
DepositoryCapacity capacity = new DepositoryCapacity(
configuration.getInt("capacity.default", 0),
configuration.getStringList("capacity.permissions")
return new Depository(
identifier, configuration.getString("name"),
GUIConfiguration.readConfiguration(configuration.getConfigurationSection("gui")),
new DepositoryCapacity(
configuration.getInt("capacity.default", 0),
configuration.getStringList("capacity.permissions")
),
readItems(configuration.getConfigurationSection("items"))
);
}
ConfigurationSection itemsSection = configuration.getConfigurationSection("items");
if (itemsSection != null) {
private static Map<String, DepositoryItem> readItems(ConfigurationSection section) {
if (section == null) return new HashMap<>();
Map<String, DepositoryItem> items = new HashMap<>();
for (String key : section.getKeys(false)) {
ConfigurationSection itemSection = section.getConfigurationSection(key);
if (itemSection != null) {
items.put(key, DepositoryItem.readFrom(key, itemSection));
}
}
return null;
return items;
}
}

View File

@ -1,7 +1,9 @@
package cc.carm.plugin.ultradepository.configuration.depository;
import cc.carm.plugin.ultradepository.Main;
import cc.carm.plugin.ultradepository.util.ItemStackFactory;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -23,7 +25,7 @@ public class DepositoryItem {
@Nullable List<String> lore;
public DepositoryItem(@NotNull Material material, int data,
int slot, int price, int limit,
int slot, double price, int limit,
@Nullable String name, @Nullable List<String> lore) {
this.material = material;
this.data = data;
@ -35,7 +37,7 @@ public class DepositoryItem {
}
public @NotNull String getTypeID() {
return getMaterial().name() + (getData() != 0 ? ":" + getData() : "");
return getMaterial().name() + ":" + getData();
}
public @NotNull Material getMaterial() {
@ -89,4 +91,33 @@ public class DepositoryItem {
public int hashCode() {
return Objects.hash(material, data);
}
public static DepositoryItem readFrom(String typeID, ConfigurationSection section) {
try {
Material material;
int data = 0;
if (typeID.contains(":")) {
String[] args = typeID.split(":");
material = Material.matchMaterial(args[0]);
data = Integer.parseInt(args[1]);
} else {
material = Material.matchMaterial(typeID);
}
if (material == null) throw new NullPointerException(typeID);
return new DepositoryItem(
material, data,
section.getInt("slot", 0),
section.getDouble("price", 0),
section.getInt("limit", 0),
section.getString("name", material.name()),
section.getStringList("lore")
);
} catch (Exception ex) {
Main.error("没有与 " + typeID + " 匹配的物品!");
Main.error("No match material of " + typeID + " !");
return null;
}
}
}