-
Notifications
You must be signed in to change notification settings - Fork 237
Table of Contents
- What is all the information in the window title?
- How does Amidst work?
- What is the history of Amidst?
The window title contains the following information:
- the Amidst version
- the selected Minecraft launcher profile
- the selected Minecraft version
- the recognised Minecraft version
A Minecraft version is a specific version of the Minecraft game code.
The Minecraft launcher allows you to create multiple profiles. You can choose a custom name for each profile and assign a Minecraft version that should be used for it. You can also specify a custom directory for the profile, that is used to store the save games.
The selected Minecraft version is the Minecraft version associated with the selected launcher profile.
The recognised Minecraft version depends on information that is taken from the actual Minecraft game code (the jar file).
We use the recognised version to determine which Amidst features should be activated, e.g. the used mineshaft algorithm. We do this, because it allows Amidst to be executed only from the jar file, without knowing the Minecraft version.
However, the algorithm to extract the recognised Minecraft version from the Minecraft game code is not as good as it should be. This means, some actually different Minecraft versions are mapped to the same recognised Minecraft version. For example, the versions 1.8.9, 1.8.8, 1.8.7, 1.8.6, 1.8.5 and 1.8.4 are all mapped to the recognised Minecraft version 1.8.9. This means, we cannot enable or disable Amidst features for one of the given versions, but only for all of them.
Amidst uses the following steps to generate the map:
-
First, a specific set of class files is identified in the given Minecraft jar file. It uses a heuristic to do this: While the name of the class files might change between Minecraft versions, there are some characteristics to uniquely identify the required classes.
-
Once the correct classes are identified, Amidst uses Java's reflection mechanism to directly use the biome generator that is implemented in the Minecraft source code.
-
Finally, the probable position of a given set of structures is calculated.
The Minecraft world generator has several stages. Amidst uses only the stage which generates the rough shape of the biomes as a 2D map. However, there are more stages like the terrain generator, which is also used by the structure generator. Amidst does not use those additional stages to keep the rendering as quick as it is.
This is a consequence of Amidst not using all stages of the Minecraft world generator, as described above. Thus, there are some structures displayed by Amidst which are not generated by Minecraft, called false positives with a probability of about 10% to 20%. There are also structures generated by Minecraft that are not displayed by Amidst, called false negatives with a probability of less than 1%. Making this more accurate would significantly slow down the rendering of the map.
This is a consequence of Amidst being unable to generate the exact same structures as the Minecraft world generator, as described above. Especially, the Dungeon generator strongly depends on later stages of the Minecraft world generator. Thus, Amidst is unable to display correct Dungeon locations with a high probability. To prevent confusion, we made the decision to omit the Dungeons generator from Amidst.
Amidst was originally developed by Skidoodle aka skiphs. It started as a Stronghold Finder. Later on, skiphs decided to add more features and to publish the source code using an open source license. First, it was published on Bitbucket, but later it was moved to Github. Also, a readily compiled version was provided and a wiki as well as a second minecraftforum thread was created.
There is also a statement by skiphs about the history of Amidst. Basically, there have been four iterations:
- the Stronghold Finder
- small area of the map with coordinates
- infinite scrolling
- complete rewrite called Amidst
After the development in the main repository slowed down, DrFrankenstone aka Treer started to maintain a fork, called AmidstExporter. He added support for many new features.
After a while, Amidst underwent a huge refactoring. The merging of the iteration three code with the iteration four code was finished, new features were added and many features of AmidstExporter were ported back to Amidst. During this process, Amidst was moved to this repository to enable easier collaboration of multiple developers.