Git Product home page Git Product logo

retrowrapper's Introduction

RetroWrapper - NeRd fork

A way to play fixed old versions of Minecraft from the vanilla launcher, MultiMC, and more.

Build status

Usage

RetroWrapper is available as an installer for creating wrapped versions to use in the vanilla launcher, or a MultiMC-formatted instance. Head to the releases page to grab the newest version! If you find any issues I don't know about or I've accidentally introduced, please report them on the issues page.

What is RetroWrapper?

RetroWrapper is a collection of patches and fixes for old versions of Minecraft, to restore functionality and fix various compatibility issues. Features include:

Server / website emulation:

  • Classic online level loading and saving emulation
  • Modern server authentication support (with experimental classic server support)
  • Skin, cape, and sound fixes (with offline cache)

Patches:

  • Alpha 1.1.1 grey screen fix
  • Bit depth fix
  • Classic mouse moving
  • Indev loading / saving
  • macOS native cursor crash fix and input patches
  • Quit button fix
  • (Experimental) M1 windowed colour fixes

Misc:

  • Built-in update checker and crash report helper
  • Java 5+ support (including Java 9+ support!)
  • Multi-platform, launcher, and version support
  • Support for using updated libraries in wrapped instances
  • Support for using M1 LWJGL natives in wrapped instances

Additionally, RetroWrapper includes support for some more obscure features and versions, including the isometric viewer, Minecraft 4K support, and a single player teleport "hack" tool.

RetroWrapper includes an installer for use with the vanilla launcher, which supports Windows, macOS and Linux. MultiMC instances using RetroWrapper can be downloaded from the releases page as well.

How does RetroWrapper work?

RetroWrapper is built on the same technology that the official Minecraft launcher uses for patching old versions of Minecraft: LegacyLauncher. RetroWrapper uses tweak classes to implement many runtime patches, and to re-direct known URLs to the local server emulator. The server emulator runs locally on your PC, and acts as a replacement for online functionality, such as handling resource downloads, and server authentication.

As RetroWrapper uses LegacyLauncher, it is version independent, and able to run on a number of launchers.

Credits

Binary distributions of this software bundle classes from the Apache Commons project, which are licensed under the Apache License Version 2.0. A full copy of this license can be found in COMMONS-LICENSE.txt, which should be in the top-level directory of this repository. Binary distributions also include this information under META-INF.

Binary distributions of this software bundle classes from minimal-json, which are licensed under the MIT license. A full copy of this license can be found in MINIMAL-JSON-LICENSE.txt, which should be in the top-level directory of this repository. Binary distributions also include this information under META-INF.

Crafatar is used to download skins and capes if the Mojang API isn't working. Thank you for providing an alternative skin and cape API!

Original Readme (outdated)

Enables you to play fixed old versions of minecraft without ever touching .jar files, works even when offline!

Needs Java 7 or higher!!

WHAT IS DONE

  • Fixed indev loading
  • Skins (with offline cache!)
  • Sounds
  • Saving
  • Online Saving
  • Mouse movement on very old classic

HOW TO USE (automatic)

Download latest version from releases and launch it.

Select version you want to wrap and click 'Install'

ISOMETRIC VIEWER

Only for inf-20100627 and inf-20100618.

Patch that version, and edit inf-20100627-wrapped.json

Change tweakClass com.zero.retrowrapper.RetroTweaker to tweakClass com.zero.retrowrapper.IsomTweaker

Done

SINGLEPLAYER HACKS

  • Teleport hack (useful for checking farlands!)

Works all the way from 0.27 to Release 1.0, havent tested other versions but propably it works too.

You need to add -Dretrowrapper.hack=true to Java arguments in your launcher.

HOW TO USE (manual)

Download retrowrapper-1.2.jar from releases.

Navigate to .minecraft/libraries/com/

Create new folder 'zero' and navigate to it

Create new folder 'retrowrapper' inside 'zero' and navigate to it

Create new folder '1.2' inside 'retrowrapper' and navigate to it

Copy retrowrapper-1.2.jar to '1.2'

Now go into .minecraft/versions/

Copy that folder you want to patch and add -retro to its name (eg. c0.30_01 to c0.30_01-retro)

Go inside that folder and add -retro to all filenames inside it

Edit .json and

  • add -retro to id (eg. replace "id": "c0.30_01c", with *"id": "c0.30_01c-retro",*)
  • replace "libraries": with "libraries": [{"name": "com.zero:retrowrapper:1.2"},
  • replace --tweakClass net.minecraft.launchwrapper....VanillaTweaker with --tweakClass com.zero.retrowrapper.RetroTweaker

Launch Minecraft and choose newly created version!

Uses minimal-json by ralfstx

retrowrapper's People

Contributors

araghon007 avatar nerdthened avatar xa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

retrowrapper's Issues

Hacks cause crashes when player goes past the 32 bit integer limit

"When you teleport to an extremely high value in inf-20100227, then the game crashes. I tried the 32-bit integer limit using RetroWrapper and the game instantly crashed. When you start the game back up, it instantly crashes before it can even take you to the title screen in the same way. Disabling cheats fixes this, but when you turn cheats back on, it happens again. Perhaps RW somehow saves coordinates from the previous session and uses them when you start the game again?" - MisterSheeple

Unable to join servers.

Using RetroWrapper + MultiMC Offline removes multiplayer support.

Error Message:
java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.TimSort.mergeHi(TimSort.java:899) at java.util.TimSort.mergeAt(TimSort.java:516) at java.util.TimSort.mergeCollapse(TimSort.java:439) at java.util.TimSort.sort(TimSort.java:245) at java.util.Arrays.sort(Arrays.java:1512) at java.util.ArrayList.sort(ArrayList.java:1464) at java.util.Collections.sort(Collections.java:177) at e.a(SourceFile:926) at ip.c(SourceFile:342) at ip.b(SourceFile:284) at net.minecraft.client.Minecraft.run(SourceFile:607) at java.lang.Thread.run(Thread.java:748)

Ligma

Now that I have your attention, I'd like to propose that we remove RetroWrapper from the FAQ, as it's now been inactive for a year.

Retrowrapper only detects a single version

Its only detecting Alpha 1.0.16
I have way more versions than that (I want to wrap inf-20100320 specifically and it cant detect it)
I dont know anything about why this is happening
help

Option to patch out hardcoded distance limits?

e.g. optionally removing the 32 million limit from inf 0313-b1.7.3 and the 30m limit for later versions. If this ever supports snapshots then it'd definitely be interesting to see how 14w30a/b behave at a billion blocks out.

Not sure if this is out of scope since it would require jar modding.

Wrapper crashes upon starting

Once I open up the wrapper version (I am doing this on the first build of infdev) it crashes, I have tried with many different versions, and the same output comes. Please help!

Opening RetroWrapper Crashes Itself Upon Launching

So I started up retrowrapper and it crashed. For me on MacOS 11.6.3. I had an installation of java 17.0.1 which could be the reason why it crashed. The newer versions that you made do not start and give me a java boot error after 10 seconds from starting it. I went to even older versions made on xa's repository and those booted but it gave me an error that said null and so it didn't work. Here is me reproducing it:

Screen.Recording.2022-02-07.at.8.09.07.PM.mov

1.8+ format skins in pre-1.8 versions

Potentially also out of scope since it would likely require directly modifying the game somewhat, but many skins which rely on 1.8+ rendering look weird in versions prior to that point.

Capes are not wrapped?

RetroWrapper does not handle cape URLs. The fix would be similar to the skin fix. Needs more investigation.

Possible Multiplayer Connectivity?

BetaCraft manages to do this so I think that it would work well for this, as the only way that I can connect to classic servers without BetaCraft is by using ViaFabric, which is super unstable and typically doesn't work well.

Missing / wrong sound effects for certain versions

"All versions before Alpha 1.1.2_01 (Sound bugfix) have wrong and missing sound effects." - yellowwinner
"January Indev not playing sounds. Versions in-20100111-1, in-20100125-1, in-20100125-2, in-20100130 and in-20100131 don't play any sound. c0.30 and in-20100203 play sounds like other versions." - yellowwinner
"No sound in inf-20100415 without wi-fi connection." - Gruby5588

Actions to take:
"Need to parse client version somehow and send sound definitions depending on it." - kcxx

Dosen't do anything

As in the title, launching the wrapped instance does absolutely nothing diffrent from vanilla, inf-20100325 blackscreens after pressing "Create" in the world generation screen, same with any version before it, sometimes the world loads but any movement attept makes it go to the blackscreen.

EDIT:
After updating GPU drivers (Nvidia, game ready driver) if minecraft is left on the black screen for too long (earlier nothing happend) it starts trying to render something, when that eventually fails it crashes and soon the whole computer follows, with an error code that seems to refernece some issue with graphics buffer/GPU RAM

How can I use this within MultiMC?

The guide in the description of this fork is only for the official Minecraft launcher. I want to install this onto MultiMC since it is way easier to control different versions there and much more that is more of a personal choice. There isn't a .json file in the MultiMC launcher that's anything like the one in the official Minecraft launcher. Also, I think it would be nice to have an option of where you install the wrapper. Like, installing it in MultiMC or the official launcher or TLauncher or any launcher really. It would be pretty convenient and easy as you wouldn't have to deal with launcher specific quirks on your own and install it manually.

Framerate issues after loading levels

When making a level in 0.30, there are very noticeable framerate drops after loading a save file. If this gets fixed I will be very thankful for that. Example: Before Saving and Loading Save
Screen Shot 2021-10-22 at 9 46 32 PM
(94 fps)
After Loading That Same Save:
Screen Shot 2021-10-22 at 9 48 45 PM
20 - 40 fps

After some research, apparently there are areas in the world that cause massive spikes of lag. FPS above 60 does persist as usual but the 20 - 40 fps issues happen if I look in that area.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.