- 38
- 2
- 1
Доброго дня! Я поглощен созданием класса, который должен подгружать данные такого формата:
В мапу самого класса. Пару дней мучаю нейросеть и, увы, спотыкаюсь на этапе применения класса, потому что дипсик не знает событий, которые имплементируют IModEventBus и, соответственно, никак не помогает сделать адекватный @SubscribeEvent.
Разумеется, из-за того, что событие не реализует нужный интерфейс, майнкрафт у меня не запускается, выдавая соответствующую ошибку. Вопрос один: как фиксить? Может быть, нужно делать что-то совсем другое? Буду рад примеру правильного кода или релевантной документации, заранее благодарю душевно.
Java:
{
"minecraft:apple": {
"carbohydrates": 3,
"minerals": 10,
"vitamins": 5,
"water": 3
}
}
Класс:
public class FoodDietValuesManager {
private static final Map<ResourceLocation, DietValuesHolder> DIET_VALUES = new HashMap<>();
public static void load(ResourceManager manager) {
DIET_VALUES.clear();
try {
Optional<Resource> optionalResource = manager.getResource(new ResourceLocation("tmcfm", "food_nutrition.json"));
if(optionalResource.isEmpty()) {
LogManager.getLogger().warn("Diet values are not present!");
return;
}
Resource resource = optionalResource.get();
JsonObject json = JsonParser.parseReader(resource.openAsReader()).getAsJsonObject();
for (Map.Entry<String, JsonElement> entry : json.entrySet()) {
ResourceLocation itemId = new ResourceLocation(entry.getKey());
DietValuesHolder data = parseDietValues(entry.getValue().getAsJsonObject());
DIET_VALUES.put(itemId, data);
}
} catch (IOException e) {
LogManager.getLogger().error("Failed to load food data values!", e);
}
}
private static DietValuesHolder parseDietValues(JsonObject json) {
DietValuesHolder data = new DietValuesHolder();
...
return data;
}
}
Событие для обработки json'а:
@SubscribeEvent
public void onDataLoad(AddReloadListenerEvent event) {
event.addListener(new ResourceManagerReloadListener() {
@Override
public void onResourceManagerReload(ResourceManager manager) {
FoodNutritionManager.load(manager);
}
});
}
Разумеется, из-за того, что событие не реализует нужный интерфейс, майнкрафт у меня не запускается, выдавая соответствующую ошибку. Вопрос один: как фиксить? Может быть, нужно делать что-то совсем другое? Буду рад примеру правильного кода или релевантной документации, заранее благодарю душевно.
