Parse Minecraft version from CrashReport instead of using Minecraft.getVersion()
Using the getVersion() method doesn't produce consistent results (e.g. MultiMC5 changes the value). The Minecraft version in the CrashReport is hard-coded and should therefore be rather consistent.
This commit is contained in:
@@ -33,6 +33,8 @@ import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.entity.RenderPlayer;
|
||||
import net.minecraft.client.resources.IResourcePack;
|
||||
import net.minecraft.client.settings.GameSettings;
|
||||
import net.minecraft.crash.CrashReport;
|
||||
import net.minecraft.crash.CrashReportCategory;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.common.config.Configuration;
|
||||
import net.minecraftforge.fml.client.FMLClientHandler;
|
||||
@@ -66,6 +68,20 @@ public class ReplayMod {
|
||||
return Loader.instance().getIndexedModList().get(MODID);
|
||||
}
|
||||
|
||||
@Getter(lazy = true)
|
||||
private static final String minecraftVersion = parseMinecraftVersion();
|
||||
private static String parseMinecraftVersion() {
|
||||
CrashReport crashReport = new CrashReport("", new Throwable());
|
||||
@SuppressWarnings("unchecked")
|
||||
List<CrashReportCategory.Entry> list = crashReport.getCategory().children;
|
||||
for (CrashReportCategory.Entry entry : list) {
|
||||
if ("Minecraft Version".equals(entry.getKey())) {
|
||||
return entry.getValue();
|
||||
}
|
||||
}
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
public static final String MODID = "replaymod";
|
||||
public static final ApiClient apiClient = new ApiClient();
|
||||
private static final Minecraft mc = Minecraft.getMinecraft();
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.mojang.authlib.exceptions.AuthenticationException;
|
||||
import eu.crushedpixel.replaymod.ReplayMod;
|
||||
import eu.crushedpixel.replaymod.api.replay.ReplayModApiMethods;
|
||||
import eu.crushedpixel.replaymod.api.replay.SearchQuery;
|
||||
import eu.crushedpixel.replaymod.api.replay.holders.*;
|
||||
@@ -208,12 +209,9 @@ public class ApiClient {
|
||||
//in a development environment, getContainer().getVersion() will return ${version}
|
||||
if(versionIdentifier.equals("${version}")) return true;
|
||||
|
||||
//get the Minecraft Version String
|
||||
String mcversion = mc.getVersion();
|
||||
|
||||
QueryBuilder builder = new QueryBuilder(ReplayModApiMethods.up_to_date);
|
||||
builder.put("version", versionIdentifier);
|
||||
builder.put("minecraft", mcversion);
|
||||
builder.put("minecraft", ReplayMod.getMinecraftVersion());
|
||||
return invokeAndReturn(builder, Success.class).isSuccess();
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@ import eu.crushedpixel.replaymod.utils.ReplayFile;
|
||||
import eu.crushedpixel.replaymod.utils.ReplayFileIO;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.ChannelInboundHandlerAdapter;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -169,11 +168,7 @@ public abstract class DataListener extends ChannelInboundHandlerAdapter {
|
||||
ReplayMod.replayFileAppender.startNewReplayFileWriting();
|
||||
saveState = 1;
|
||||
|
||||
String mcversion = Minecraft.getMinecraft().getVersion();
|
||||
String[] split = mcversion.split("-");
|
||||
if(split.length > 0) {
|
||||
mcversion = split[0];
|
||||
}
|
||||
String mcversion = ReplayMod.getMinecraftVersion();
|
||||
|
||||
String[] pl = players.toArray(new String[players.size()]);
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import de.johni0702.replaystudio.filter.StreamFilter;
|
||||
import de.johni0702.replaystudio.replay.ReplayFile;
|
||||
import de.johni0702.replaystudio.replay.ReplayMetaData;
|
||||
import de.johni0702.replaystudio.stream.PacketStream;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import eu.crushedpixel.replaymod.ReplayMod;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.spacehq.mc.protocol.packet.ingame.server.ServerResourcePackSendPacket;
|
||||
import org.spacehq.mc.protocol.packet.ingame.server.entity.spawn.ServerSpawnPlayerPacket;
|
||||
@@ -111,17 +111,11 @@ public class ConnectMetadataFilter implements StreamFilter {
|
||||
}
|
||||
|
||||
public void writeTo(ReplayFile output) throws IOException {
|
||||
String mcVersion = Minecraft.getMinecraft().getVersion();
|
||||
String[] split = mcVersion.split("-");
|
||||
if(split.length > 0) {
|
||||
mcVersion = split[0];
|
||||
}
|
||||
|
||||
ReplayMetaData metaData = new ReplayMetaData();
|
||||
metaData.setDuration((int) duration);
|
||||
metaData.setSingleplayer(false);
|
||||
metaData.setServerName("Multiple worlds");
|
||||
metaData.setMcVersion(mcVersion);
|
||||
metaData.setMcVersion(ReplayMod.getMinecraftVersion());
|
||||
metaData.setDate(System.currentTimeMillis());
|
||||
metaData.setPlayers(players.toArray(new String[players.size()]));
|
||||
output.writeMetaData(metaData);
|
||||
|
||||
@@ -97,5 +97,9 @@ public net.minecraft.client.settings.GameSettings field_151446_aD # mapSoundLeve
|
||||
# Frustum
|
||||
public net.minecraft.client.renderer.culling.Frustum field_78552_a # clippingHelper
|
||||
|
||||
# CrashReportCategory
|
||||
public net.minecraft.crash.CrashReportCategory field_85077_c # children
|
||||
public net.minecraft.crash.CrashReportCategory$Entry
|
||||
|
||||
# Example
|
||||
# public net.minecraft.package.ClassName func_some_id(Ljava/lang/Class;IZS)V # methodName
|
||||
|
||||
Reference in New Issue
Block a user