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();
|
Collection<ModContainer> mods = FabricLoader.getInstance().getAllMods();
|
||||||
for (ModContainer mod: mods) {
|
for (ModContainer mod: mods) {
|
||||||
String name = mod.getMetadata().getId();
|
String name = mod.getMetadata().getId();
|
||||||
|
int preVersion = getModVersion(WorldDataAPI.getRootTag(name).getString("version"));
|
||||||
int version = getModVersion(mod.getMetadata().getVersion().toString());
|
int version = getModVersion(mod.getMetadata().getVersion().toString());
|
||||||
if (version > 0) {
|
if (version > preVersion) {
|
||||||
shoudFix |= FIX_VERSIONS.getOrDefault(name, version) < version;
|
int fixVersion = FIX_VERSIONS.getOrDefault(name, version);
|
||||||
|
shoudFix |= fixVersion < version && fixVersion >= preVersion;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (!shoudFix) {
|
if (!shoudFix) {
|
||||||
|
|
|
@ -4,10 +4,13 @@ import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
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.CompoundTag;
|
||||||
import net.minecraft.nbt.NbtIo;
|
import net.minecraft.nbt.NbtIo;
|
||||||
import ru.bclib.BCLib;
|
import ru.bclib.BCLib;
|
||||||
|
@ -22,6 +25,7 @@ public class WorldDataAPI {
|
||||||
MODS.stream().parallel().forEach(modID -> {
|
MODS.stream().parallel().forEach(modID -> {
|
||||||
File file = new File(dataDir, modID + ".nbt");
|
File file = new File(dataDir, modID + ".nbt");
|
||||||
CompoundTag root = new CompoundTag();
|
CompoundTag root = new CompoundTag();
|
||||||
|
TAGS.put(modID, root);
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
try {
|
try {
|
||||||
root = NbtIo.readCompressed(file);
|
root = NbtIo.readCompressed(file);
|
||||||
|
@ -30,7 +34,19 @@ public class WorldDataAPI {
|
||||||
BCLib.LOGGER.error("World data loading failed", e);
|
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