<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ornithemc.net/index.php?action=history&amp;feed=atom&amp;title=Nests</id>
	<title>Nests - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ornithemc.net/index.php?action=history&amp;feed=atom&amp;title=Nests"/>
	<link rel="alternate" type="text/html" href="https://wiki.ornithemc.net/index.php?title=Nests&amp;action=history"/>
	<updated>2026-04-29T03:14:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.ornithemc.net/index.php?title=Nests&amp;diff=38&amp;oldid=prev</id>
		<title>Space Walker: remove chapter about inner class attributes (and move them to the Nester page)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ornithemc.net/index.php?title=Nests&amp;diff=38&amp;oldid=prev"/>
		<updated>2025-08-12T12:52:46Z</updated>

		<summary type="html">&lt;p&gt;remove chapter about inner class attributes (and move them to the Nester page)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:52, 12 August 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Nests are Ornithe&amp;#039;s inner class patches. They are used to modify inner class attributes in Java class files.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Nests are Ornithe&amp;#039;s inner class patches. They are used to modify inner class attributes in Java class files.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;See [[Nester]] for information on how these patches are applied&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;See [[Nester]] for information on &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;inner class attributes and &lt;/ins&gt;how these patches are applied.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== Inner Class Attributes ===&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Inner class attributes are necessary for interactions with inner classes to work as expected. This is especially noticeable with non-static inner classes, and anonymous classes in particular. These inner classes can access fields, methods, or variables from their outer class or method, as well as the other way around.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Obfuscators such as [https://www.guardsquare.com/proguard ProGuard] may remove these class file attributes. This is generally not a problem, since these attributes do not affect the runtime behavior of a Java application. However, if you wish to de-obfuscate and decompile a jar file, you will get better results when the inner class attributes are present&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Relevance ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Relevance ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-35:rev-38:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Space Walker</name></author>
	</entry>
	<entry>
		<id>https://wiki.ornithemc.net/index.php?title=Nests&amp;diff=35&amp;oldid=prev</id>
		<title>Space Walker: create Nests page</title>
		<link rel="alternate" type="text/html" href="https://wiki.ornithemc.net/index.php?title=Nests&amp;diff=35&amp;oldid=prev"/>
		<updated>2025-07-31T16:00:51Z</updated>

		<summary type="html">&lt;p&gt;create Nests page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Nests are Ornithe&amp;#039;s inner class patches. They are used to modify inner class attributes in Java class files.&lt;br /&gt;
&lt;br /&gt;
See [[Nester]] for information on how these patches are applied.&lt;br /&gt;
&lt;br /&gt;
=== Inner Class Attributes ===&lt;br /&gt;
&lt;br /&gt;
Inner class attributes are necessary for interactions with inner classes to work as expected. This is especially noticeable with non-static inner classes, and anonymous classes in particular. These inner classes can access fields, methods, or variables from their outer class or method, as well as the other way around.&lt;br /&gt;
&lt;br /&gt;
Obfuscators such as [https://www.guardsquare.com/proguard ProGuard] may remove these class file attributes. This is generally not a problem, since these attributes do not affect the runtime behavior of a Java application. However, if you wish to de-obfuscate and decompile a jar file, you will get better results when the inner class attributes are present.&lt;br /&gt;
&lt;br /&gt;
=== Relevance ===&lt;br /&gt;
&lt;br /&gt;
Most Minecraft versions before 1.8.2 Pre-release 5 had the inner class attributes stripped from the jar. Nests were created in an effort to reconstruct what the original inner classes would have been in the source code.&lt;br /&gt;
&lt;br /&gt;
=== File Specification ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;.nest&amp;lt;/code&amp;gt; files are &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; encoded text files. Each line defines the relationship between a class and its outer class and, if applicable, outer method. A line has the following format.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;class name&amp;gt;	&amp;lt;outer class name&amp;gt;	&amp;lt;outer method name&amp;gt;	&amp;lt;outer method descriptor&amp;gt;	&amp;lt;inner name&amp;gt;	&amp;lt;access&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;class name&amp;lt;/code&amp;gt;: the internal name of the class&lt;br /&gt;
* &amp;lt;code&amp;gt;outer class name&amp;lt;/code&amp;gt;: the internal name of the outer class.&lt;br /&gt;
* &amp;lt;code&amp;gt;outer method name&amp;lt;/code&amp;gt;: the name of the outer method (may be empty).&lt;br /&gt;
* &amp;lt;code&amp;gt;outer method descriptor&amp;lt;/code&amp;gt;: the descriptor describing the type of the outer method (may be empty).&lt;br /&gt;
* &amp;lt;code&amp;gt;inner name&amp;lt;/code&amp;gt;: the inner name of the class (may be empty).&lt;br /&gt;
* &amp;lt;code&amp;gt;access&amp;lt;/code&amp;gt;: the access flags for the inner class.&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;inner name&amp;lt;/code&amp;gt; component does not directly correspond to the inner name as defined in the inner class attribute. Rather, it is used to construct a new internal name of the class. The actual inner name is parsed from this component.&lt;br /&gt;
&lt;br /&gt;
For regular inner classes, the &amp;lt;code&amp;gt;inner name&amp;lt;/code&amp;gt; component corresponds directly to the inner name as defined in the inner class attribute. If the component is all digits, the inner class is assumed to be anonymous, and the actual inner name &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;. If the component starts with digits and transitions to text, the inner class is assumed to be local, and the inner name the text part of the component.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
* &amp;lt;code&amp;gt;Example&amp;lt;/code&amp;gt; - the class is assumed to be a regular inner class, with inner name &amp;lt;code&amp;gt;Example&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - the class is assumed to be an anonymous class, with inner name &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;1Example&amp;lt;/code&amp;gt; - the class is assumed to be a local class, with inner name &amp;lt;code&amp;gt;Example&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[category:Mod Development]]&lt;/div&gt;</summary>
		<author><name>Space Walker</name></author>
	</entry>
</feed>