- Баллы
- 66
- Имя в Minecraft
- Migel077
Вот мой класс ConfigurationSerializable
А вот так я его записываю:
В YAML файле я получаю ссылки, а не значения, почему?
Код:
package discordhelper.discordhelper.utils;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
import org.jetbrains.annotations.NotNull;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
public class LinkResponse implements ConfigurationSerializable {
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SerializableField{
public String discord();
}
@SerializableField(discord="discordId")
private Long discordId;
@SerializableField(discord="timestamp")
private Long timestamp;
@SerializableField(discord="discordName")
private String discordName;
public LinkResponse() {}
public LinkResponse(Map<String, Object> map){
Class<? extends LinkResponse> clazz = getClass();
try {
for (Field field : clazz.getDeclaredFields()) {
SerializableField annotation = field.getAnnotation(SerializableField.class);
if (annotation == null || map.get(annotation.discord()) == null) continue;
Object object = map.get(annotation.discord());
field.setAccessible(true);
field.set(this, object);
}
} catch (IllegalAccessException | IllegalArgumentException e){
e.printStackTrace();
}
}
public Long getDiscordId(){
return discordId;
}
public String getDiscordIdAsString(){
return String.valueOf(discordId);
}
public void setDiscordId(Long discordId){
this.discordId = discordId;
}
public void setDiscordId(String discordIdAsString){
this.discordId = Long.parseLong(discordIdAsString);
}
public Long getTimestamp(){
return timestamp;
}
public String getTimestampAsString(){
return String.valueOf(timestamp);
}
public void setTimestamp(Long timestamp){
this.timestamp = timestamp;
}
public void setTimestamp(String timestampAsStirng){
this.timestamp = Long.valueOf(timestampAsStirng);
}
public String getDiscordName(){
return discordName;
}
public void setDiscordName(String discordName){
this.discordName = discordName;
}
@Override
public @NotNull Map<String, Object> serialize() {
Map<String, Object> map = new HashMap<String, Object>();
Class<? extends LinkResponse> clazz = getClass();
try {
for (Field field : clazz.getDeclaredFields()) {
SerializableField annotation = field.getAnnotation(SerializableField.class);
if (annotation == null) continue;
String discord = annotation.discord();
map.put(discord, this);
}
} catch (IllegalArgumentException e){
e.printStackTrace();
}
return map;
}
public static LinkResponse deserialize(Map<String, Object> map){
return new LinkResponse(map);
}
}
А вот так я его записываю:
Код:
LinkResponse response = new LinkResponse();
response.setDiscordId("84848979744");
response.setDiscordName("Migel");
response.setTimestamp(4654564654L);
dataFM.set("users.4.responses", response.getTimestamp());
SaveDataYaml();
В YAML файле я получаю ссылки, а не значения, почему?