World data cache fixes
This commit is contained in:
parent
e0a9d21d59
commit
5cef3a03eb
2 changed files with 21 additions and 3 deletions
|
@ -33,9 +33,11 @@ public class DataFixerAPI {
|
|||
Collection<ModContainer> mods = FabricLoader.getInstance().getAllMods();
|
||||
for (ModContainer mod: mods) {
|
||||
String name = mod.getMetadata().getId();
|
||||
int preVersion = getModVersion(WorldDataAPI.getRootTag(name).getString("version"));
|
||||
int version = getModVersion(mod.getMetadata().getVersion().toString());
|
||||
if (version > 0) {
|
||||
shoudFix |= FIX_VERSIONS.getOrDefault(name, version) < version;
|
||||
if (version > preVersion) {
|
||||
int fixVersion = FIX_VERSIONS.getOrDefault(name, version);
|
||||
shoudFix |= fixVersion < version && fixVersion >= preVersion;
|
||||
}
|
||||
};
|
||||
if (!shoudFix) {
|
||||
|
|
|
@ -4,10 +4,13 @@ import java.io.File;
|
|||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.fabricmc.loader.api.ModContainer;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.NbtIo;
|
||||
import ru.bclib.BCLib;
|
||||
|
@ -22,6 +25,7 @@ public class WorldDataAPI {
|
|||
MODS.stream().parallel().forEach(modID -> {
|
||||
File file = new File(dataDir, modID + ".nbt");
|
||||
CompoundTag root = new CompoundTag();
|
||||
TAGS.put(modID, root);
|
||||
if (file.exists()) {
|
||||
try {
|
||||
root = NbtIo.readCompressed(file);
|
||||
|
@ -30,7 +34,19 @@ public class WorldDataAPI {
|
|||
BCLib.LOGGER.error("World data loading failed", e);
|
||||
}
|
||||
}
|
||||
TAGS.put(modID, root);
|
||||
else {
|
||||
Optional<ModContainer> optional = FabricLoader.getInstance().getModContainer(modID);
|
||||
if (optional.isPresent()) {
|
||||
ModContainer modContainer = optional.get();
|
||||
if (BCLib.isDevEnvironment()) {
|
||||
root.putString("version", "63.63.63");
|
||||
}
|
||||
else {
|
||||
root.putString("version", modContainer.getMetadata().getVersion().toString());
|
||||
}
|
||||
saveFile(modID);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue