Skip to content

Instantly share code, notes, and snippets.

@PhoenixVX
Last active June 27, 2024 22:19
Show Gist options
  • Save PhoenixVX/78e363177329db1773351657ee472e9c to your computer and use it in GitHub Desktop.
Save PhoenixVX/78e363177329db1773351657ee472e9c to your computer and use it in GitHub Desktop.
Beta 1.2_02 (May 17th, 2011)

Discrepancies

Class file version discrepancy

Certain class files have been compiled with Java 6 instead of Java 5 (Minecraft was targetted to Java 5 but built with Java 6) in these versions.

Examples of classes built targetting Java 6:

  • WorldGenProfiler.class
  • Encoder.class
  • net/minecraft/client
    • User.class
    • Timer.class
    • StopGameException.class
    • Screenshot.class
    • ProgressRenderer.class
    • OpenGLCapabilities.class
    • MouseHandler.class
    • MinecraftApplet.class
    • MemoryTracker.class
    • Lighting.class
    • KeyMapping.class
    • GuiMessage.class
    • CrashReport.class
    • CrashInfoPanel.class
    • BackgroundDownloader.class
    • net/minecraft/client/sound
      • CodecMus.class
      • Sound.class
      • SoundEngine.class
      • SoundRepository.class
    • net/minecraft/client/skins
      • DefaultTexturePack.class
      • FileTexturePack.class
      • TexturePack.class
      • TexturePackRepository.class
      • TexturePackSelectScreen.class
    • net/minecraft/client/gamemode
      • CreativeMode.class
      • GameMode.class
      • SurvivalMode.class
    • net/minecraft/client/gui
      • Button.class
      • ChatScreen.class
      • ConfirmScreen.class
      • ControlsScreen.class
      • CustomJFileChooser.class
      • DeathScreen.class
      • DeleteWorldScreen.class
      • ErrorScreen.class
      • Font.class
      • GuiComponent.class
      • ContainerScreen.class
      • CraftingScreen.class
      • FurnaceScreen.class
      • InventoryScreen.class
      • TextEditScreen.class
      • TrapScreen.class
      • JoinMultiplayerScreen.class
      • LevelConflictScreen.class
      • NameEntryScreen.class
      • OptionsScreen.class
      • PauseScreen.class
      • Screen.class
      • ScreenSizeCalculator.class
      • SlideButton.class
      • SmallButton.class
    • net/minecraft/client/map
      • Map.class
    • net/minecraft/client/model
      • BoatModel.class
      • ChickenModel.class
      • CowModel.class
      • CreeperModel.class
      • Cube.class
      • GhastModel.class
      • HumanoidModel.class
      • LocalPlayerModel.class
      • MinecartModel.class
      • Model.class
      • PigModel.class
      • Polygon.class
      • QuadrupedModel.class
      • SheepFurModel.class
      • SheepModel.class
      • SignModel.class
      • SkeletonModel.class
      • SlimeModel.class
      • SpiderModel.class
      • SquidModel.class
      • Vertex.class
      • ZombieModel.class
    • net/minecraft/client/multiplayer
      • ClientConnection.class
      • ConnectScreen.class
      • DisconnectedScreen.class
      • MultiPlayerChunkCache.class
      • MultiPlayerGameMode.class
      • MultiPlayerLevel.class
      • MultiplayerLocalPlayer.class
      • ReceivingLevelScreen.class
    • net/minecraft/client/particle
      • BreakingItemParticle.class
      • BubbleParticle.class
      • ExplodeParticle.class
      • FlameParticle.class
      • LavaParticle.class
      • NoteParticle.class
      • Particle.class
      • ParticleEngine.class
      • PortalParticle.class
      • RedDustParticle.class
      • SmokeParticle.class
      • SplashParticle.class
      • TakeAnimationParticle.class
      • TerrainParticle.class
      • WaterDropParticle.class
    • net/minecraft/client/player
      • ControllerInput.class
      • Input.class
      • KeyboardInput.class
      • LocalPlayer.class
      • RemotePlayer.class
    • net/minecraft/client/renderer
      • Chunk.class
      • DirtyChunkSorter.class
      • DistanceChunkSorter.class
      • HttpTexture.class
      • HttpTextureProcessor.class
      • ItemInHandRenderer.class
      • LevelRenderer.class
      • MobSkinTextureProcessor.class
      • OffsettedRenderList.class
      • Tesselator.class
      • Textures.class
      • TileRenderer.class
      • net/minecraft/client/renderer/culling
        • AllowAllCuller.class
        • Culler.class
        • Frustum.class
        • FrustumCuller.class
        • FrustumData.class
        • ViewportCuller.class
      • net/minecraft/client/renderer/ptexture
        • ClockTexture.class
        • CompassTexture.class
        • DynamicTexture.class
        • FireTexture.class
        • LavaSideTexture.class
        • LavaTexture.class
        • PortalTexture.class
        • WaterSideTexture.class
        • WaterTexture.class
      • net/minecraft/client/renderer/entity
        • ArrowRenderer.class
        • BoatRenderer.class
        • ChickenRenderer.class
        • CowRenderer.class
        • CreeperRenderer.class
        • DefaultRenderer.class
        • EntityRenderer.class
        • FallingTileRenderer.class
        • FireballRenderer.class
        • FishingHookRenderer.class
        • GhastRenderer.class
        • GiantMobRenderer.class
        • HumanoidMobRenderer.class
        • ItemRenderer.class
        • ItemSpriteRenderer.class
        • MinecartRenderer.class
        • MobRenderer.class
        • PaintingRenderer.class
        • PigRenderer.class
        • PlayerRenderer.class
        • SheepRenderer.class
        • SlimeRenderer.class
        • SpiderRenderer.class
        • SquidRenderer.class
        • TntRenderer.class
      • net/minecraft/client/renderer/tileentity
        • MobSpawnerRenderer.class
        • SignRenderer.class
        • TileEntityRenderDispatcher.class
        • TileEntityRenderer.class
    • net/minecraft/isom
      • IsomPreview.class
      • IsomPreviewApplet.class
      • Zone.class
      • ZoneRenderer.class
  • All Paulscode classes
  • All JCraft classes

All of these classes are compiled for Java 6 and not the standard Java 5 that was used for versions of this time period. As a sidenote, Java 5 classes do exist in this JAR. All of the common classes and non-client library classes are compiled targetting Java 5. In this case, it is likely that the Minecraft.Client project was targetting Java 6 or the JDK was not set correctly. As a less-likelier option, the developer who compiled this build may have not performed a clean rebuild before building this JAR and thus might have classes present from later versions of the game, though this is doubtful.

As a side note, JCraft and Paulscode were compiled to Java 6 as they were present in the source tree and not as a library on the classpath.

Different modification dates

image

As can be seen in the above image, the date of class files and resources range from May 12th, 2011 to May 17th, 2011. The likely reason for this is that a clean rebuild was not performed to wipe away the Ant build cache and thus used "older" versions of classes which were not edited. Normally, these dates would be wiped away when ProGuard runs on the build but as this is a deobfuscated build... ProGuard was never ran and thus the dates are easily visible.

Presence of Host OS and Version attributes

The JAR file itself has 2 attributes that built JARs from Mojang do not usually have. Host OS and Version attributes are usually stripped away during the compilation step. My current hypothesis is that older versions of Windows (such as Windows 7) do not store these attributes as Windows 11 certainly does and the build was built on a Mac according to the MANIFEST.MF with an Apple-branded JDK which may or may not keep these attributes.

I do not believe this have any effect on proving or disproving the veracity of this build.

All in all, I believe this build is a real leak from Mojang at the time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment