diff --git a/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java b/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java index e889b77a..7647d7b4 100755 --- a/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java +++ b/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java @@ -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 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(); diff --git a/src/main/java/eu/crushedpixel/replaymod/api/ApiClient.java b/src/main/java/eu/crushedpixel/replaymod/api/ApiClient.java index a1aaa2b6..9bfc5a7e 100755 --- a/src/main/java/eu/crushedpixel/replaymod/api/ApiClient.java +++ b/src/main/java/eu/crushedpixel/replaymod/api/ApiClient.java @@ -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(); } diff --git a/src/main/java/eu/crushedpixel/replaymod/recording/DataListener.java b/src/main/java/eu/crushedpixel/replaymod/recording/DataListener.java index 419543de..ea88b3cf 100755 --- a/src/main/java/eu/crushedpixel/replaymod/recording/DataListener.java +++ b/src/main/java/eu/crushedpixel/replaymod/recording/DataListener.java @@ -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()]); diff --git a/src/main/java/eu/crushedpixel/replaymod/studio/ConnectMetadataFilter.java b/src/main/java/eu/crushedpixel/replaymod/studio/ConnectMetadataFilter.java index ee60f2d4..ccb4da1e 100644 --- a/src/main/java/eu/crushedpixel/replaymod/studio/ConnectMetadataFilter.java +++ b/src/main/java/eu/crushedpixel/replaymod/studio/ConnectMetadataFilter.java @@ -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); diff --git a/src/main/resources/META-INF/replaymod_at.cfg b/src/main/resources/META-INF/replaymod_at.cfg index a5d3c5f0..c7a9a905 100644 --- a/src/main/resources/META-INF/replaymod_at.cfg +++ b/src/main/resources/META-INF/replaymod_at.cfg @@ -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