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:
|
items:
|
||||||
"DIAMOND":
|
"DIAMOND":
|
||||||
original: true #只允许无任何特殊属性的物品被收入
|
|
||||||
slot: 5
|
slot: 5
|
||||||
price: 10
|
price: 10
|
||||||
limit: 100
|
limit: 100
|
||||||
|
@ -5,6 +5,7 @@ import org.bukkit.configuration.ConfigurationSection;
|
|||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ -65,19 +66,26 @@ public class Depository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Depository loadFrom(String identifier, FileConfiguration configuration) {
|
public static Depository loadFrom(String identifier, FileConfiguration configuration) {
|
||||||
String name = configuration.getString("name");
|
return new Depository(
|
||||||
|
identifier, configuration.getString("name"),
|
||||||
GUIConfiguration guiConfiguration = GUIConfiguration.readConfiguration(configuration.getConfigurationSection("gui"));
|
GUIConfiguration.readConfiguration(configuration.getConfigurationSection("gui")),
|
||||||
DepositoryCapacity capacity = new DepositoryCapacity(
|
new DepositoryCapacity(
|
||||||
configuration.getInt("capacity.default", 0),
|
configuration.getInt("capacity.default", 0),
|
||||||
configuration.getStringList("capacity.permissions")
|
configuration.getStringList("capacity.permissions")
|
||||||
|
),
|
||||||
|
readItems(configuration.getConfigurationSection("items"))
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
ConfigurationSection itemsSection = configuration.getConfigurationSection("items");
|
private static Map<String, DepositoryItem> readItems(ConfigurationSection section) {
|
||||||
if (itemsSection != null) {
|
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 items;
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package cc.carm.plugin.ultradepository.configuration.depository;
|
package cc.carm.plugin.ultradepository.configuration.depository;
|
||||||
|
|
||||||
|
import cc.carm.plugin.ultradepository.Main;
|
||||||
import cc.carm.plugin.ultradepository.util.ItemStackFactory;
|
import cc.carm.plugin.ultradepository.util.ItemStackFactory;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@ -23,7 +25,7 @@ public class DepositoryItem {
|
|||||||
@Nullable List<String> lore;
|
@Nullable List<String> lore;
|
||||||
|
|
||||||
public DepositoryItem(@NotNull Material material, int data,
|
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) {
|
@Nullable String name, @Nullable List<String> lore) {
|
||||||
this.material = material;
|
this.material = material;
|
||||||
this.data = data;
|
this.data = data;
|
||||||
@ -35,7 +37,7 @@ public class DepositoryItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public @NotNull String getTypeID() {
|
public @NotNull String getTypeID() {
|
||||||
return getMaterial().name() + (getData() != 0 ? ":" + getData() : "");
|
return getMaterial().name() + ":" + getData();
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NotNull Material getMaterial() {
|
public @NotNull Material getMaterial() {
|
||||||
@ -89,4 +91,33 @@ public class DepositoryItem {
|
|||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hash(material, data);
|
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