mirror of
https://github.com/CarmJos/UltraDepository.git
synced 2024-09-19 19:55:45 +00:00
完成背包物品配置读取
This commit is contained in:
parent
3ca791a731
commit
10ca626304
@ -19,7 +19,6 @@ gui:
|
||||
|
||||
items:
|
||||
"DIAMOND":
|
||||
original: true #只允许无任何特殊属性的物品被收入
|
||||
slot: 5
|
||||
price: 10
|
||||
limit: 100
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user