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.renderer.entity.RenderPlayer;
|
||||||
import net.minecraft.client.resources.IResourcePack;
|
import net.minecraft.client.resources.IResourcePack;
|
||||||
import net.minecraft.client.settings.GameSettings;
|
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.MinecraftForge;
|
||||||
import net.minecraftforge.common.config.Configuration;
|
import net.minecraftforge.common.config.Configuration;
|
||||||
import net.minecraftforge.fml.client.FMLClientHandler;
|
import net.minecraftforge.fml.client.FMLClientHandler;
|
||||||
@@ -66,6 +68,20 @@ public class ReplayMod {
|
|||||||
return Loader.instance().getIndexedModList().get(MODID);
|
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 String MODID = "replaymod";
|
||||||
public static final ApiClient apiClient = new ApiClient();
|
public static final ApiClient apiClient = new ApiClient();
|
||||||
private static final Minecraft mc = Minecraft.getMinecraft();
|
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.JsonParseException;
|
||||||
import com.google.gson.JsonParser;
|
import com.google.gson.JsonParser;
|
||||||
import com.mojang.authlib.exceptions.AuthenticationException;
|
import com.mojang.authlib.exceptions.AuthenticationException;
|
||||||
|
import eu.crushedpixel.replaymod.ReplayMod;
|
||||||
import eu.crushedpixel.replaymod.api.replay.ReplayModApiMethods;
|
import eu.crushedpixel.replaymod.api.replay.ReplayModApiMethods;
|
||||||
import eu.crushedpixel.replaymod.api.replay.SearchQuery;
|
import eu.crushedpixel.replaymod.api.replay.SearchQuery;
|
||||||
import eu.crushedpixel.replaymod.api.replay.holders.*;
|
import eu.crushedpixel.replaymod.api.replay.holders.*;
|
||||||
@@ -208,12 +209,9 @@ public class ApiClient {
|
|||||||
//in a development environment, getContainer().getVersion() will return ${version}
|
//in a development environment, getContainer().getVersion() will return ${version}
|
||||||
if(versionIdentifier.equals("${version}")) return true;
|
if(versionIdentifier.equals("${version}")) return true;
|
||||||
|
|
||||||
//get the Minecraft Version String
|
|
||||||
String mcversion = mc.getVersion();
|
|
||||||
|
|
||||||
QueryBuilder builder = new QueryBuilder(ReplayModApiMethods.up_to_date);
|
QueryBuilder builder = new QueryBuilder(ReplayModApiMethods.up_to_date);
|
||||||
builder.put("version", versionIdentifier);
|
builder.put("version", versionIdentifier);
|
||||||
builder.put("minecraft", mcversion);
|
builder.put("minecraft", ReplayMod.getMinecraftVersion());
|
||||||
return invokeAndReturn(builder, Success.class).isSuccess();
|
return invokeAndReturn(builder, Success.class).isSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import eu.crushedpixel.replaymod.utils.ReplayFile;
|
|||||||
import eu.crushedpixel.replaymod.utils.ReplayFileIO;
|
import eu.crushedpixel.replaymod.utils.ReplayFileIO;
|
||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
import io.netty.channel.ChannelInboundHandlerAdapter;
|
import io.netty.channel.ChannelInboundHandlerAdapter;
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
@@ -169,11 +168,7 @@ public abstract class DataListener extends ChannelInboundHandlerAdapter {
|
|||||||
ReplayMod.replayFileAppender.startNewReplayFileWriting();
|
ReplayMod.replayFileAppender.startNewReplayFileWriting();
|
||||||
saveState = 1;
|
saveState = 1;
|
||||||
|
|
||||||
String mcversion = Minecraft.getMinecraft().getVersion();
|
String mcversion = ReplayMod.getMinecraftVersion();
|
||||||
String[] split = mcversion.split("-");
|
|
||||||
if(split.length > 0) {
|
|
||||||
mcversion = split[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
String[] pl = players.toArray(new String[players.size()]);
|
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.ReplayFile;
|
||||||
import de.johni0702.replaystudio.replay.ReplayMetaData;
|
import de.johni0702.replaystudio.replay.ReplayMetaData;
|
||||||
import de.johni0702.replaystudio.stream.PacketStream;
|
import de.johni0702.replaystudio.stream.PacketStream;
|
||||||
import net.minecraft.client.Minecraft;
|
import eu.crushedpixel.replaymod.ReplayMod;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.spacehq.mc.protocol.packet.ingame.server.ServerResourcePackSendPacket;
|
import org.spacehq.mc.protocol.packet.ingame.server.ServerResourcePackSendPacket;
|
||||||
import org.spacehq.mc.protocol.packet.ingame.server.entity.spawn.ServerSpawnPlayerPacket;
|
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 {
|
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();
|
ReplayMetaData metaData = new ReplayMetaData();
|
||||||
metaData.setDuration((int) duration);
|
metaData.setDuration((int) duration);
|
||||||
metaData.setSingleplayer(false);
|
metaData.setSingleplayer(false);
|
||||||
metaData.setServerName("Multiple worlds");
|
metaData.setServerName("Multiple worlds");
|
||||||
metaData.setMcVersion(mcVersion);
|
metaData.setMcVersion(ReplayMod.getMinecraftVersion());
|
||||||
metaData.setDate(System.currentTimeMillis());
|
metaData.setDate(System.currentTimeMillis());
|
||||||
metaData.setPlayers(players.toArray(new String[players.size()]));
|
metaData.setPlayers(players.toArray(new String[players.size()]));
|
||||||
output.writeMetaData(metaData);
|
output.writeMetaData(metaData);
|
||||||
|
|||||||
@@ -97,5 +97,9 @@ public net.minecraft.client.settings.GameSettings field_151446_aD # mapSoundLeve
|
|||||||
# Frustum
|
# Frustum
|
||||||
public net.minecraft.client.renderer.culling.Frustum field_78552_a # clippingHelper
|
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
|
# Example
|
||||||
# public net.minecraft.package.ClassName func_some_id(Ljava/lang/Class;IZS)V # methodName
|
# public net.minecraft.package.ClassName func_some_id(Ljava/lang/Class;IZS)V # methodName
|
||||||
|
|||||||
Reference in New Issue
Block a user