В настоящее время я разрабатываю плагин в Minecraft Spigot. Я не верю, что это проблема с цапфой, но я считаю, что это проблема java. У меня в классе есть метод setInjury (), который должен создать копию списка, удалить элемент из копии и заменить список новым. Странная вещь, это работает. Для одного элемента, в частности, он просто отказывается удалить его. Это удалит другие, но не этот. Я проверил корпус и все. Даже логическое значение из .remove говорит, что оно было удалено, но это не так.
(iStore - это файл конфигурации файла, а store - это мой класс, в котором он находится)
Раньше в операторе if else, но логическое значение внутри remove работает точно так же. Самое странное во всем этом - это то, что оно буквально работало вчера.
List<String> sevs = iStore.getStringList(uuid + "." + section);
for(String s : iStore.getStringList(uuid + "." + section)) {
boolean isFracture = s.equals("Fracture") && injury.equals("Broken") ;
if(s.equals(injury)) {
continue;
}
sevs.add("Broken");
sevs.remove(isFracture ? "Fracture" : "Intact");
iStore.set(uuid + "." + section, sevs);
store.saveStore();
}
Мой другой более грязный код, который делает то же самое, чтобы доказать, что он должен его удалить:
List<String> sevs = iStore.getStringList(uuid + "." + section);
for(String s : iStore.getStringList(uuid + "." + section)) {
if(sevs.contains(injury)) {
return;
}else if(injury.equals("Broken") && s.equals("Fracture")){
sevs.add("Broken");
sevs.remove("Fracture");
Bukkit.getLogger().info(Boolean.toString(sevs.remove("Fracture"))); //returns true??
iStore.set(uuid + "." + section, sevs);
store.saveStore();
}else{
sevs.add(injury);
sevs.remove("Intact");
iStore.set(uuid + "." + section, sevs);
store.saveStore();
}
Список перед запуском кода:
rlegstat:
- Cured
- Fracture
//Desired result if injury is equal to broken:
rlegstat:
- Cured
- Broken
//Actual results
rlegstat:
- Cured
- Fracture
- Broken