Чтобы сделать стопку предметов, вам нужно иметь материал и количество:
String s = /* your material string */;
Material m = Material.matchMaterial(s);
ItemStack stack = new ItemStack(m, 1);
Однако обратите внимание, что ItemStack
— это ConfigurationSerializable
, то есть вы можете просто сохранить его прямо в конфиге:
ItemStack is = /*...*/;
getConfig().set("example", is);
is = (ItemStack) getConfig().get("example");
Инвентаризации являются контекстными, поэтому они не сериализуемы. Если вы хотите, вы можете создать вспомогательный класс для отслеживания брони и невоздушных (null
) стеков как класса, а затем сделать этот класс ConfigurationSerializable
:
@SerializableAs("Inventory")
public class SInventory implements ConfigurationSerializable {
private final List<ItemStack> items = new ArrayList<>();
private ItemStack head;
private ItemStack chest;
private ItemStack legs;
private ItemStack boots;
/* Other fields */
public SInventory(Map<String, Object> config) {
List<ItemStack> items = (List<ItemStack>) config.get("inventory");
for (ItemStack item : items) {
if (item != null) {
this.items.add(item);
}
}
this.head = (ItemStack) config.get("head");
this.chest = (ItemStack) config.get("chest");
this.legs = (ItemStack) config.get("legs");
this.boots = (ItemStack) config.get("boots");
}
public static SInventory valueOf(Map<String, Object> config) {
return new SInventory(config);
}
public static SInventory deserialize(Map<String, Object> config) {
return new SInventory(config);
}
@Override
public Map<String, Object> serialize() {
Map<String, Object> back = new HashMap<>();
back.put("inventory", this.items);
back.put("head", this.head);
back.put("chest", this.chest);
back.put("legs", this.legs);
back.put("boots", this.boots);
return back;
}
Map<String, Object>
— это раздел, который представляет этот инвентарь. Итак, если вы сохраните List<ItemStack>
под строкой «Inventory» при передаче его через serialize
, вы сможете получить его с карты следующим образом:
List<ItemStack> inv = (List<ItemStack>) map.get("Inventory");
Обычно это приводит к гораздо более простой и управляемой системе.
person
Rogue
schedule
03.06.2014