mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-14 09:05:17 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
95afc95b24 | ||
|
|
34493b0d99 | ||
|
|
e77d2547ad | ||
|
|
40a34af431 | ||
|
|
352117fd78 | ||
|
|
81328b6684 | ||
|
|
b5af446d71 | ||
|
|
d0c6e92900 | ||
|
|
2a9c485edc | ||
|
|
a13598b17e | ||
|
|
40b54013b4 | ||
|
|
1c9a853868 | ||
|
|
da70cdd35a | ||
|
|
b993cf4a98 | ||
|
|
ac065ff5f7 | ||
|
|
913f6f6d36 | ||
|
|
9468e41bbf | ||
|
|
ffdd056a18 | ||
|
|
f157e7a6ec | ||
|
|
4a9d0f9bd5 | ||
|
|
0398916666 | ||
|
|
dec9a3924d | ||
|
|
2470120680 | ||
|
|
ba90b61607 | ||
|
|
9a5e24e338 | ||
|
|
29ef3d5ab4 | ||
|
|
f46a538b41 | ||
|
|
182aa9c0cb | ||
|
|
1857064afa | ||
|
|
cb05c8c4aa | ||
|
|
f275a24b43 | ||
|
|
1d84e8063e | ||
|
|
57befa89bb | ||
|
|
10b16d32da | ||
|
|
3f21a2c1b4 | ||
|
|
b2958c9066 | ||
|
|
9520978b81 | ||
|
|
4981aa3421 | ||
|
|
c48b48ee15 | ||
|
|
9947ba8503 | ||
|
|
a3f48734ff | ||
|
|
0378355c37 | ||
|
|
c625ef3009 | ||
|
|
d4b30422b6 | ||
|
|
6de36d78f5 | ||
|
|
7348929819 | ||
|
|
b9f4b02cb0 | ||
|
|
20e93a412e | ||
|
|
e44e8b3112 | ||
|
|
bab4d87ce7 | ||
|
|
bc9d1fe657 | ||
|
|
d4d522c597 | ||
|
|
97269a5e3d | ||
|
|
c913258ca3 | ||
|
|
c7ab872c85 | ||
|
|
e91431fb70 | ||
|
|
dfa3a2665d | ||
|
|
4fa375683f | ||
|
|
0db4624b27 | ||
|
|
c997f2adbc | ||
|
|
26e5f4b4ff | ||
|
|
2336002f20 | ||
|
|
e88a0cd13f | ||
|
|
dbf5fe38ce | ||
|
|
c47d08c89d | ||
|
|
7af5c21d74 | ||
|
|
6f96d89e2b | ||
|
|
111b0216fd | ||
|
|
1d0384f8f6 | ||
|
|
adc8972277 | ||
|
|
5990e29af7 | ||
|
|
2676c8999c | ||
|
|
3a200e901e | ||
|
|
c97ac284a5 | ||
|
|
54e06e841d | ||
|
|
7ce84491d1 | ||
|
|
532bee7ce1 | ||
|
|
e24f949517 | ||
|
|
4545beb49d | ||
|
|
3f4bf61ae6 | ||
|
|
155e846818 | ||
|
|
ba3707af22 | ||
|
|
ad79b9ed86 | ||
|
|
5f7df5e742 | ||
|
|
7aa7221756 | ||
|
|
8844554da6 | ||
|
|
6f0eedc9a6 | ||
|
|
f21cd286ca | ||
|
|
f1b533ad87 | ||
|
|
5a97d183df | ||
|
|
fbd57b3264 | ||
|
|
efc369ee83 | ||
|
|
91ecf71109 | ||
|
|
9b6525e805 | ||
|
|
dc7d02ebf6 | ||
|
|
7037184a4e | ||
|
|
bf38d94756 | ||
|
|
3d17434510 | ||
|
|
29d6c875d0 | ||
|
|
902772ed0c | ||
|
|
1229c4c4ea | ||
|
|
7fecf2ad6b | ||
|
|
c418da353f | ||
|
|
110cf372eb | ||
|
|
7a004087f7 | ||
|
|
70cfe24e67 | ||
|
|
8960f6869f | ||
|
|
71a92de5d9 |
No files matched your search
@@ -15,3 +15,6 @@ fmlbranding.properties
|
||||
/binpatch
|
||||
/mcp_data/
|
||||
/map_client.txt
|
||||
/*.lzma
|
||||
**/*.lzma
|
||||
/installer_base.jar
|
||||
@@ -131,9 +131,10 @@
|
||||
</copy>
|
||||
</target>
|
||||
|
||||
<target name="merge-common">
|
||||
<target name="merge-common" depends="buildenvsetup,build-deobf-data">
|
||||
<copy todir="${client.mcp.srcdir}" overwrite="true" verbose="true">
|
||||
<fileset dir="${common.src.dir}" includes="**/*.java" />
|
||||
<fileset dir="${basedir}" includes="deobfuscation_data-${version.minecraft}.lzma"/>
|
||||
</copy>
|
||||
</target>
|
||||
|
||||
@@ -145,21 +146,33 @@
|
||||
</condition>
|
||||
|
||||
<mkdir dir="${basedir}/target" />
|
||||
<jar destfile="${basedir}/target/${universal.jarname}.zip" duplicate="preserve">
|
||||
<path id="server.classpath">
|
||||
<pathelement path="${mcp.home}/jars/libraries/net/minecraft/launchwrapper/1.3/launchwrapper-1.3.jar"/>
|
||||
<pathelement path="${mcp.home}/jars/libraries/org/ow2/asm/asm-all/4.1/asm-all-4.1.jar"/>
|
||||
<pathelement path="${mcp.home}/jars/libraries/lzma/lzma/0.0.1/lzma-0.0.1.jar"/>
|
||||
<pathelement path="${mcp.home}/jars/libraries/net/sf/jopt-simple/jopt-simple/4.5/jopt-simple-4.5.jar"/>
|
||||
<pathelement path="${mcp.home}/jars/libraries/org/scala-lang/scala-library/2.10.2/scala-library-2.10.2.jar"/>
|
||||
<pathelement path="${mcp.home}/jars/libraries/org/scala-lang/scala-compiler/2.10.2/scala-compiler-2.10.2.jar"/>
|
||||
<pathelement path="${mcp.home}/jars/minecraft_server.${version.minecraft}.jar"/>
|
||||
</path>
|
||||
<manifestclasspath property="server.jar.classpath" jarfile="${mcp.home}/jars/minecraft_server.jar">
|
||||
<classpath refid="server.classpath" />
|
||||
</manifestclasspath>
|
||||
<jar destfile="${basedir}/target/${universal.jarname}.jar" duplicate="preserve">
|
||||
<manifest>
|
||||
<attribute name="Main-Class" value="cpw.mods.fml.relauncher.ServerLaunchWrapper" />
|
||||
<attribute name="Class-Path" value="minecraft_server.jar:lib/guava-14.0-rc3.jar:lib/bcprov-jdk15on-148-src.zip:lib/asm-debug-all-4.1.jar:lib/scala-library.jar:lib/argo-3.2-src.jar" />
|
||||
<attribute name="Class-Path" value="${server.jar.classpath}" />
|
||||
</manifest>
|
||||
<fileset dir="${client.mcp.obfoutput}" includes="**/*.class" excludes="*.class,net/minecraft/**/*.class" />
|
||||
</jar>
|
||||
<antcall target="signjar" />
|
||||
<zip update="true" destfile="${basedir}/target/${universal.jarname}.zip">
|
||||
<zip update="true" destfile="${basedir}/target/${universal.jarname}.jar">
|
||||
<fileset dir="${basedir}" includes="binpatches.pack.lzma,deobfuscation_data-${version.minecraft}.lzma"/>
|
||||
<fileset dir="${client.mcp.obfoutput}" includes="*.class" />
|
||||
<zipfileset dir="${basedir}" includes="fmlversion.properties" />
|
||||
<zipfileset dir="${basedir}" includes="LICENSE-fml.txt" />
|
||||
<zipfileset dir="${common.src.dir}" includes="mcpmod.info" />
|
||||
<zipfileset dir="${client.src.dir}" includes="mcp.png" />
|
||||
<zipfileset dir="${client.src.dir}" includes="mcplogo.png" />
|
||||
<zipfileset dir="${basedir}" includes="install/CREDITS-fml.txt" fullpath="CREDITS-fml.txt" />
|
||||
<zipfileset dir="${common.src.dir}" includes="*.cfg" />
|
||||
<mappedresources>
|
||||
@@ -180,10 +193,39 @@
|
||||
</zip>
|
||||
</target>
|
||||
|
||||
<target name="build-installer" depends="build-universal">
|
||||
<condition property="version.fullname" value="${version.minecraft}-${version}" else="${version.minecraft}-${version}-${version.branch}">
|
||||
<equals arg1="${version.branch}" arg2="master" />
|
||||
</condition>
|
||||
<tstamp>
|
||||
<format property="current.time" pattern="yyyy-MM-dd'T'HH:mm:ssZ" />
|
||||
</tstamp>
|
||||
|
||||
<delete file="${basedir}/installer_base.jar" />
|
||||
<delete file="${basedir}/install_profile.json" />
|
||||
<get src="http://files.minecraftforge.net/installer/forge-installer-1.3-shrunk.jar" dest="${basedir}/installer_base.jar" />
|
||||
<copy file="${basedir}/jsons/${version.minecraft}-rel.json" tofile="${basedir}/install_profile.json" />
|
||||
<copy file="${basedir}/installer_base.jar" tofile="${basedir}/target/${modname}-installer-${version.fullname}.jar" />
|
||||
<replace file="${basedir}/install_profile.json">
|
||||
<replaceFilter token="@version@" value="${version}" />
|
||||
<replaceFilter token="@minecraft_version@" value="${version.minecraft}" />
|
||||
<replaceFilter token="@timestamp@" value="${current.time}" />
|
||||
<replaceFilter token="@universal_jar@" value="${modname}-universal-${version.fullname}.jar" />
|
||||
</replace>
|
||||
<jar destfile="${basedir}/target/${modname}-installer-${version.fullname}.jar" update="true">
|
||||
<zipfileset dir="${basedir}" includes="install_profile.json" />
|
||||
<zipfileset dir="${basedir}/jsons" includes="big_logo.png" />
|
||||
<zipfileset dir="${basedir}/target" includes="${modname}-universal-${version.fullname}.jar" />
|
||||
</jar>
|
||||
<delete file="${basedir}/install_profile.json" />
|
||||
</target>
|
||||
|
||||
<target name="build-source-pack" depends="makeversion">
|
||||
<property name="srcpack.jarname" value="${modname}-src-${version.minecraft}-${version}-${version.branch}" />
|
||||
<zip destfile="${basedir}/target/${srcpack.jarname}.zip">
|
||||
<zipfileset dir="${basedir}" includes="LICENSE-fml.txt,difflist.txt,commands.patch,mcp_merge.cfg,mc_versions.cfg" prefix="fml" />
|
||||
<zipfileset dir="${basedir}/jsons" includes="${version.minecraft}-dev.json" fullpath="fml/fml.json"/>
|
||||
<zipfileset dir="${basedir}" includes="deobfuscation_data-${version.minecraft}.lzma" prefix="fml/common" />
|
||||
<zipfileset dir="${common.src.dir}" includes="**/*.java" prefix="fml/common" />
|
||||
<zipfileset dir="${client.src.dir}" includes="**/*.java" prefix="fml/client" />
|
||||
<zipfileset dir="${client.src.dir}" includes="mcp.png" prefix="fml/client" />
|
||||
@@ -230,12 +272,9 @@
|
||||
</copy>
|
||||
<antcall target="writeversion" />
|
||||
<delete dir="build-tmp-deobf" />
|
||||
<zip destfile="deobfuscation_data-${version.minecraft}.jar" basedir="${basedir}">
|
||||
<include name="deobfuscation_data-${version.minecraft}.lzma"/>
|
||||
</zip>
|
||||
</target>
|
||||
|
||||
<target name="build" depends="buildenvsetup,merge-client,merge-common,build-deobf-data,build-universal,build-source-pack" />
|
||||
<target name="build" depends="buildenvsetup,build-deobf-data,merge-client,merge-common,build-universal,build-installer,build-source-pack" />
|
||||
|
||||
<target name="jenkinsbuild" depends="buildenvsetup,jenkinsfmldecompile,patch,build" />
|
||||
|
||||
@@ -274,6 +313,13 @@
|
||||
<fileset dir="${mcp.srcdir}" />
|
||||
</copy>
|
||||
<antcall target="writeversion" />
|
||||
<delete>
|
||||
<fileset dir="${basedir}" includes="deobfuscation_data-*.lzma" />
|
||||
</delete>
|
||||
<antcall target="build-deobf-data" />
|
||||
<copy todir="${common.src.dir}">
|
||||
<fileset dir="${basedir}" includes="deobfuscation_data-*.lzma" />
|
||||
</copy>
|
||||
<antcall target="makeeclipse" />
|
||||
<echo>Setup complete! You should now be able to open ${basedir}/eclipse as a workspace in eclipse and import/refresh the FML project</echo>
|
||||
</target>
|
||||
@@ -388,7 +434,7 @@
|
||||
<target name="makebinpatches" depends="buildenvsetup,makeversion">
|
||||
<path id="diffset.libs">
|
||||
<pathelement path="${mcp.home}/jars/libraries/com/google/guava/guava/14.0/guava-14.0.jar"/>
|
||||
<pathelement path="${mcp.home}/jars/libraries/org/ow2/asm/asm-all/4.1/asm-all-4.1.jar"/>
|
||||
<pathelement path="${mcp.home}/jars/libraries/org/ow2/asm/asm-debug-all/4.1/asm-debug-all-4.1.jar"/>
|
||||
<pathelement path="${mcp.home}/jars/libraries/lzma/lzma/0.0.1/lzma-0.0.1.jar"/>
|
||||
<pathelement path="${mcp.obfoutput}/minecraft"/>
|
||||
</path>
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
*/
|
||||
package cpw.mods.fml.client;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
@@ -28,6 +30,11 @@ import net.minecraft.client.multiplayer.NetClientHandler;
|
||||
import net.minecraft.client.multiplayer.WorldClient;
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.client.renderer.entity.RenderManager;
|
||||
import net.minecraft.client.resources.FileResourcePack;
|
||||
import net.minecraft.client.resources.FolderResourcePack;
|
||||
import net.minecraft.client.resources.ReloadableResourceManager;
|
||||
import net.minecraft.client.resources.ResourcePack;
|
||||
import net.minecraft.client.resources.SimpleReloadableResourceManager;
|
||||
import net.minecraft.crash.CrashReport;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
@@ -44,6 +51,7 @@ import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.MapDifference;
|
||||
import com.google.common.collect.MapDifference.ValueDifference;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import cpw.mods.fml.client.modloader.ModLoaderClientHelper;
|
||||
import cpw.mods.fml.client.registry.KeyBindingRegistry;
|
||||
@@ -78,7 +86,7 @@ import cpw.mods.fml.relauncher.Side;
|
||||
/**
|
||||
* Handles primary communication from hooked code into the system
|
||||
*
|
||||
* The FML entry point is {@link #beginMinecraftLoading(Minecraft)} called from
|
||||
* The FML entry point is {@link #beginMinecraftLoading(Minecraft, List)} called from
|
||||
* {@link Minecraft}
|
||||
*
|
||||
* Obfuscated code should focus on this class and other members of the "server"
|
||||
@@ -116,7 +124,7 @@ public class FMLClientHandler implements IFMLSidedHandler
|
||||
|
||||
private ModSortingException modSorting;
|
||||
|
||||
private boolean loading;
|
||||
private boolean loading = true;
|
||||
|
||||
private WrongMinecraftVersionException wrongMC;
|
||||
|
||||
@@ -126,14 +134,25 @@ public class FMLClientHandler implements IFMLSidedHandler
|
||||
|
||||
private boolean serverShouldBeKilledQuietly;
|
||||
|
||||
private List<ResourcePack> resourcePackList;
|
||||
|
||||
private ReloadableResourceManager resourceManager;
|
||||
|
||||
private Map<String, ResourcePack> resourcePackMap;
|
||||
|
||||
/**
|
||||
* Called to start the whole game off
|
||||
*
|
||||
* @param minecraft The minecraft instance being launched
|
||||
* @param resourcePackList The resource pack list we will populate with mods
|
||||
* @param resourceManager The resource manager
|
||||
*/
|
||||
public void beginMinecraftLoading(Minecraft minecraft)
|
||||
public void beginMinecraftLoading(Minecraft minecraft, List resourcePackList, ReloadableResourceManager resourceManager)
|
||||
{
|
||||
client = minecraft;
|
||||
this.resourcePackList = resourcePackList;
|
||||
this.resourceManager = resourceManager;
|
||||
this.resourcePackMap = Maps.newHashMap();
|
||||
if (minecraft.func_71355_q())
|
||||
{
|
||||
FMLLog.severe("DEMO MODE DETECTED, FML will not work. Finishing now.");
|
||||
@@ -141,7 +160,6 @@ public class FMLClientHandler implements IFMLSidedHandler
|
||||
return;
|
||||
}
|
||||
|
||||
loading = true;
|
||||
// TextureFXManager.instance().setClient(client);
|
||||
FMLCommonHandler.instance().beginLoading(this);
|
||||
new ModLoaderClientHelper(client);
|
||||
@@ -223,7 +241,8 @@ public class FMLClientHandler implements IFMLSidedHandler
|
||||
haltGame("There was a severe problem during mod loading that has caused the game to fail", le);
|
||||
return;
|
||||
}
|
||||
LanguageRegistry.reloadLanguageTable();
|
||||
// Reload resources
|
||||
client.func_110436_a();
|
||||
RenderingRegistry.instance().loadEntityRenderers((Map<Class<? extends Entity>, Render>)RenderManager.field_78727_a.field_78729_o);
|
||||
|
||||
loading = false;
|
||||
@@ -550,4 +569,47 @@ public class FMLClientHandler implements IFMLSidedHandler
|
||||
{
|
||||
return client.field_71462_r != null && client.field_71462_r.getClass().equals(gui);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addModAsResource(ModContainer container)
|
||||
{
|
||||
Class<?> resourcePackType = container.getCustomResourcePackClass();
|
||||
if (resourcePackType != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
ResourcePack pack = (ResourcePack) resourcePackType.getConstructor(ModContainer.class).newInstance(container);
|
||||
resourcePackList.add(pack);
|
||||
resourcePackMap.put(container.getModId(), pack);
|
||||
}
|
||||
catch (NoSuchMethodException e)
|
||||
{
|
||||
FMLLog.log(Level.SEVERE, "The container %s (type %s) returned an invalid class for it's resource pack.", container.getName(), container.getClass().getName());
|
||||
return;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
FMLLog.log(Level.SEVERE, e, "An unexpected exception occurred constructing the custom resource pack for %s", container.getName());
|
||||
throw Throwables.propagate(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateResourcePackList()
|
||||
{
|
||||
client.func_110436_a();
|
||||
}
|
||||
|
||||
public ResourcePack getResourcePackFor(String modId)
|
||||
{
|
||||
return resourcePackMap.get(modId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCurrentLanguage()
|
||||
{
|
||||
return client.func_135016_M().func_135041_c().func_135034_a();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package cpw.mods.fml.client;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
import com.google.common.base.Charsets;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.ModContainer;
|
||||
|
||||
import net.minecraft.client.resources.FileResourcePack;
|
||||
|
||||
public class FMLFileResourcePack extends FileResourcePack {
|
||||
|
||||
private ModContainer container;
|
||||
|
||||
public FMLFileResourcePack(ModContainer container)
|
||||
{
|
||||
super(container.getSource());
|
||||
this.container = container;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String func_130077_b()
|
||||
{
|
||||
return "FMLFileResourcePack:"+container.getName();
|
||||
}
|
||||
@Override
|
||||
protected InputStream func_110591_a(String resourceName) throws IOException
|
||||
{
|
||||
try
|
||||
{
|
||||
return super.func_110591_a(resourceName);
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
if ("pack.mcmeta".equals(resourceName))
|
||||
{
|
||||
FMLLog.log(container.getName(), Level.WARNING, "Mod %s is missing a pack.mcmeta file, things may not work well", container.getName());
|
||||
return new ByteArrayInputStream(("{\n" +
|
||||
" \"pack\": {\n"+
|
||||
" \"description\": \"dummy FML pack for "+container.getName()+"\",\n"+
|
||||
" \"pack_format\": 1\n"+
|
||||
"}\n" +
|
||||
"}").getBytes(Charsets.UTF_8));
|
||||
}
|
||||
else throw ioe;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public BufferedImage func_110586_a() throws IOException
|
||||
{
|
||||
return ImageIO.read(func_110591_a(container.getMetadata().logoFile));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package cpw.mods.fml.client;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
import net.minecraft.client.resources.FolderResourcePack;
|
||||
|
||||
import com.google.common.base.Charsets;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.ModContainer;
|
||||
|
||||
public class FMLFolderResourcePack extends FolderResourcePack {
|
||||
|
||||
private ModContainer container;
|
||||
|
||||
public FMLFolderResourcePack(ModContainer container)
|
||||
{
|
||||
super(container.getSource());
|
||||
this.container = container;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String func_130077_b()
|
||||
{
|
||||
return "FMLFileResourcePack:"+container.getName();
|
||||
}
|
||||
@Override
|
||||
protected InputStream func_110591_a(String resourceName) throws IOException
|
||||
{
|
||||
try
|
||||
{
|
||||
return super.func_110591_a(resourceName);
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
if ("pack.mcmeta".equals(resourceName))
|
||||
{
|
||||
FMLLog.log(container.getName(), Level.WARNING, "Mod %s is missing a pack.mcmeta file, things may not work well", container.getName());
|
||||
return new ByteArrayInputStream(("{\n" +
|
||||
" \"pack\": {\n"+
|
||||
" \"description\": \"dummy FML pack for "+container.getName()+"\",\n"+
|
||||
" \"pack_format\": 1\n"+
|
||||
"}\n" +
|
||||
"}").getBytes(Charsets.UTF_8));
|
||||
}
|
||||
else throw ioe;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public BufferedImage func_110586_a() throws IOException
|
||||
{
|
||||
return ImageIO.read(func_110591_a(container.getMetadata().logoFile));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -15,15 +15,26 @@
|
||||
package cpw.mods.fml.client;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.GuiSmallButton;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.texture.DynamicTexture;
|
||||
import net.minecraft.client.renderer.texture.SimpleTexture;
|
||||
import net.minecraft.client.renderer.texture.TextureManager;
|
||||
import net.minecraft.client.renderer.texture.TextureObject;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.client.resources.ResourcePack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.StringTranslate;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
@@ -120,28 +131,53 @@ public class GuiModList extends GuiScreen
|
||||
if (!logoFile.isEmpty())
|
||||
{
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
// TODO
|
||||
// this.field_73882_e.field_71446_o.func_98187_b(logoFile);
|
||||
Dimension dim = TextureFXManager.instance().getTextureDimensions(logoFile);
|
||||
double scaleX = dim.width / 200.0;
|
||||
double scaleY = dim.height / 65.0;
|
||||
double scale = 1.0;
|
||||
if (scaleX > 1 || scaleY > 1)
|
||||
TextureManager tm = field_73882_e.func_110434_K();
|
||||
ResourcePack pack = FMLClientHandler.instance().getResourcePackFor(selectedMod.getModId());
|
||||
try
|
||||
{
|
||||
scale = 1.0 / Math.max(scaleX, scaleY);
|
||||
}
|
||||
dim.width *= scale;
|
||||
dim.height *= scale;
|
||||
int top = 32;
|
||||
Tessellator tess = Tessellator.field_78398_a;
|
||||
tess.func_78382_b();
|
||||
tess.func_78374_a(offset, top + dim.height, field_73735_i, 0, 1);
|
||||
tess.func_78374_a(offset + dim.width, top + dim.height, field_73735_i, 1, 1);
|
||||
tess.func_78374_a(offset + dim.width, top, field_73735_i, 1, 0);
|
||||
tess.func_78374_a(offset, top, field_73735_i, 0, 0);
|
||||
tess.func_78381_a();
|
||||
BufferedImage logo = null;
|
||||
if (pack!=null)
|
||||
{
|
||||
logo = pack.func_110586_a();
|
||||
}
|
||||
else
|
||||
{
|
||||
InputStream logoResource = getClass().getResourceAsStream(logoFile);
|
||||
if (logoResource != null)
|
||||
{
|
||||
logo = ImageIO.read(logoResource);
|
||||
}
|
||||
}
|
||||
if (logo != null)
|
||||
{
|
||||
ResourceLocation rl = tm.func_110578_a("modlogo", new DynamicTexture(logo));
|
||||
this.field_73882_e.field_71446_o.func_110577_a(rl);
|
||||
Dimension dim = new Dimension(logo.getWidth(), logo.getHeight());
|
||||
double scaleX = dim.width / 200.0;
|
||||
double scaleY = dim.height / 65.0;
|
||||
double scale = 1.0;
|
||||
if (scaleX > 1 || scaleY > 1)
|
||||
{
|
||||
scale = 1.0 / Math.max(scaleX, scaleY);
|
||||
}
|
||||
dim.width *= scale;
|
||||
dim.height *= scale;
|
||||
int top = 32;
|
||||
Tessellator tess = Tessellator.field_78398_a;
|
||||
tess.func_78382_b();
|
||||
tess.func_78374_a(offset, top + dim.height, field_73735_i, 0, 1);
|
||||
tess.func_78374_a(offset + dim.width, top + dim.height, field_73735_i, 1, 1);
|
||||
tess.func_78374_a(offset + dim.width, top, field_73735_i, 1, 0);
|
||||
tess.func_78374_a(offset, top, field_73735_i, 0, 0);
|
||||
tess.func_78381_a();
|
||||
|
||||
shifty += 65;
|
||||
shifty += 65;
|
||||
}
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
this.field_73886_k.func_78261_a(selectedMod.getMetadata().name, offset, shifty, 0xFFFFFF);
|
||||
shifty += 12;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
@@ -172,6 +172,10 @@ public class KeyBindingRegistry
|
||||
|
||||
private Set<KeyHandler> keyHandlers = Sets.newLinkedHashSet();
|
||||
|
||||
/**
|
||||
* Deprecated as it should not be used by client code
|
||||
* @return
|
||||
*/
|
||||
@Deprecated
|
||||
public static KeyBindingRegistry instance()
|
||||
{
|
||||
|
||||
File renamed without changes.
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.8 KiB |
@@ -448,6 +448,7 @@ public abstract class BaseMod implements cpw.mods.fml.common.modloader.BaseModPr
|
||||
return null;
|
||||
}
|
||||
|
||||
@SideOnly(CLIENT)
|
||||
public void clientCustomPayload(NetClientHandler handler, Packet250CustomPayload packet)
|
||||
{
|
||||
|
||||
|
||||
@@ -626,6 +626,7 @@ public class ModLoader
|
||||
*
|
||||
* @param block
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public static void registerBlock(Block block)
|
||||
{
|
||||
GameRegistry.registerBlock(block);
|
||||
@@ -637,6 +638,7 @@ public class ModLoader
|
||||
* @param block
|
||||
* @param itemclass
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public static void registerBlock(Block block, Class<? extends ItemBlock> itemclass)
|
||||
{
|
||||
GameRegistry.registerBlock(block, itemclass);
|
||||
|
||||
+68
-19
@@ -1,5 +1,16 @@
|
||||
--- commands.py
|
||||
+++ commands.py
|
||||
@@ -126,8 +126,8 @@
|
||||
|
||||
|
||||
def truncate(text, length):
|
||||
- if len(text) > length:
|
||||
- return text[:length] + '...'
|
||||
+ #if len(text) > length:
|
||||
+ # return text[:length] + '...'
|
||||
return text
|
||||
|
||||
|
||||
@@ -139,6 +139,8 @@
|
||||
fieldnames = csvreader.fieldnames
|
||||
return set(fieldnames)
|
||||
@@ -9,7 +20,7 @@
|
||||
|
||||
class Commands(object):
|
||||
"""Contains the commands and initialisation for a full mcp run"""
|
||||
@@ -943,6 +945,8 @@
|
||||
@@ -950,6 +952,8 @@
|
||||
binlk = {CLIENT: self.binclient, SERVER: self.binserver}
|
||||
testlk = {CLIENT: self.testclient, SERVER: self.testserver}
|
||||
|
||||
@@ -18,7 +29,7 @@
|
||||
if not os.path.exists(os.path.join(binlk[side], os.path.normpath(testlk[side] + '.class'))):
|
||||
return False
|
||||
return True
|
||||
@@ -1274,6 +1278,9 @@
|
||||
@@ -1281,23 +1285,34 @@
|
||||
pathbinlk = {CLIENT: self.binclient, SERVER: self.binserver}
|
||||
pathsrclk = {CLIENT: self.srcclient, SERVER: self.srcserver}
|
||||
pathlog = {CLIENT: self.clientrecomplog, SERVER: self.serverrecomplog}
|
||||
@@ -28,25 +39,63 @@
|
||||
|
||||
if not os.path.exists(pathbinlk[side]):
|
||||
os.makedirs(pathbinlk[side])
|
||||
@@ -1331,7 +1338,7 @@
|
||||
raise
|
||||
|
||||
def startserver(self):
|
||||
# HINT: We create the list of source directories based on the list of packages
|
||||
# on windows we just pass wildcards, otherwise we pass the full file list
|
||||
- if self.osname == 'win':
|
||||
+ if self.osname == 'win' and False == True: #FML: Disable for windows we write to file now
|
||||
all_files = False
|
||||
append_pattern = True
|
||||
else:
|
||||
all_files = True
|
||||
append_pattern = False
|
||||
pkglist = filterdirs(pathsrclk[side], '*.java', append_pattern=append_pattern, all_files=all_files)
|
||||
+ from tempfile import NamedTemporaryFile
|
||||
if self.cmdrecompscala: # Compile scala before java as scala scans java files, but not vice-versa
|
||||
pkglistscala = pkglist[:]
|
||||
pkglistscala.extend(filterdirs(pathsrclk[side], '*.scala', append_pattern=append_pattern, all_files=all_files))
|
||||
- dirs = ' '.join(pkglistscala)
|
||||
+ f = NamedTemporaryFile(mode='wb', suffix='.txt', prefix ='scala_src_path_', delete=False) #FML: We write to a temporary file just in case the command is to long
|
||||
+ for line in pkglistscala:
|
||||
+ if os.sep == '\\':
|
||||
+ f.write('"%s"\n' % os.path.abspath(line).replace(os.sep, os.sep + os.sep))
|
||||
+ else:
|
||||
+ f.write('"%s"\n' % os.path.abspath(line))
|
||||
+ f.close()
|
||||
+ dirs = '@"%s"' % f.name
|
||||
classpath = os.pathsep.join(cplk[side])
|
||||
forkcmd = self.cmdrecompscala.format(classpath=classpath, sourcepath=pathsrclk[side], outpath=pathbinlk[side], pkgs=dirs)
|
||||
try:
|
||||
@@ -1317,7 +1332,15 @@
|
||||
self.logger.error('================================')
|
||||
self.logger.error('')
|
||||
raise
|
||||
- dirs = ' '.join(pkglist)
|
||||
+ os.unlink(f.name)
|
||||
+ f = NamedTemporaryFile(mode='wb', suffix='.txt', prefix ='java_src_path_', delete=False) #FML: We write to a temporary file just in case the command is to long
|
||||
+ for line in pkglist:
|
||||
+ if os.sep == '\\':
|
||||
+ f.write('"%s"\n' % os.path.abspath(line).replace('\\', '\\\\'))
|
||||
+ else:
|
||||
+ f.write('"%s"\n' % os.path.abspath(line))
|
||||
+ f.close()
|
||||
+ dirs = '@"%s"' % f.name
|
||||
classpath = os.pathsep.join(cplk[side])
|
||||
forkcmd = self.cmdrecomp.format(classpath=classpath, sourcepath=pathsrclk[side], outpath=pathbinlk[side],
|
||||
pkgs=dirs)
|
||||
@@ -1336,9 +1359,10 @@
|
||||
self.logger.error('==================')
|
||||
self.logger.error('')
|
||||
raise
|
||||
+ os.unlink(f.name)
|
||||
|
||||
def startserver(self, mainclass, extraargs):
|
||||
- classpath = [self.binserver] + self.cpathserver
|
||||
+ classpath = [self.binclient, self.srcclient] + self.cpathserver
|
||||
+ classpath = [self.binclient, self.srcclient] + self.cpathserver + self.cpathclient
|
||||
classpath = [os.path.join('..', p) for p in classpath]
|
||||
classpath = os.pathsep.join(classpath)
|
||||
os.chdir(self.dirjars)
|
||||
@@ -1339,7 +1346,7 @@
|
||||
self.runmc(forkcmd)
|
||||
|
||||
def startclient(self):
|
||||
- classpath = [self.binclient] + self.cpathclient
|
||||
+ classpath = [self.binclient, self.srcclient] + self.cpathclient
|
||||
classpath = [os.path.join('..', p) for p in classpath]
|
||||
classpath = os.pathsep.join(classpath)
|
||||
natives = os.path.join('..', self.dirnatives)
|
||||
@@ -1696,7 +1703,7 @@
|
||||
@@ -1703,7 +1727,7 @@
|
||||
self.runcmd(forkcmd)
|
||||
return True
|
||||
|
||||
@@ -55,7 +104,7 @@
|
||||
if not reobf:
|
||||
md5lk = {CLIENT: self.md5client, SERVER: self.md5server}
|
||||
else:
|
||||
@@ -1711,6 +1718,9 @@
|
||||
@@ -1718,6 +1742,9 @@
|
||||
class_path = ''
|
||||
else:
|
||||
class_path += '/'
|
||||
@@ -65,7 +114,7 @@
|
||||
for class_file in fnmatch.filter(filelist, '*.class'):
|
||||
class_name = class_path + os.path.splitext(class_file)[0]
|
||||
bin_file = os.path.normpath(os.path.join(path, class_file))
|
||||
@@ -1883,6 +1893,9 @@
|
||||
@@ -1890,6 +1917,9 @@
|
||||
sys.exit(1)
|
||||
|
||||
for entry in newfiles:
|
||||
@@ -75,7 +124,7 @@
|
||||
if entry[3] == 'U':
|
||||
self.logger.info('Retrieving file from server : %s', entry[0])
|
||||
cur_file = os.path.normpath(entry[0])
|
||||
@@ -1903,6 +1916,9 @@
|
||||
@@ -1910,6 +1940,9 @@
|
||||
md5reoblk = {CLIENT: self.md5reobfclient, SERVER: self.md5reobfserver}
|
||||
outpathlk = {CLIENT: self.srcmodclient, SERVER: self.srcmodserver}
|
||||
src = {CLIENT: self.srcclient, SERVER: self.srcserver}
|
||||
|
||||
@@ -175,4 +175,9 @@ public class DummyModContainer implements ModContainer
|
||||
{
|
||||
return EMPTY_PROPERTIES;
|
||||
}
|
||||
@Override
|
||||
public Class<?> getCustomResourcePackClass()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -486,4 +486,20 @@ public class FMLCommonHandler
|
||||
}
|
||||
return Joiner.on(',').join(modNames);
|
||||
}
|
||||
|
||||
public void addModToResourcePack(ModContainer container)
|
||||
{
|
||||
sidedDelegate.addModAsResource(container);
|
||||
}
|
||||
|
||||
public void updateResourcePackList()
|
||||
{
|
||||
sidedDelegate.updateResourcePackList();
|
||||
}
|
||||
|
||||
public String getCurrentLanguage()
|
||||
{
|
||||
|
||||
return sidedDelegate.getCurrentLanguage();
|
||||
}
|
||||
}
|
||||
@@ -5,13 +5,14 @@
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
|
||||
package cpw.mods.fml.common;
|
||||
|
||||
import java.io.File;
|
||||
import java.security.cert.Certificate;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
@@ -26,6 +27,9 @@ import net.minecraft.world.storage.WorldInfo;
|
||||
|
||||
import com.google.common.eventbus.EventBus;
|
||||
|
||||
import cpw.mods.fml.client.FMLFileResourcePack;
|
||||
import cpw.mods.fml.client.FMLFolderResourcePack;
|
||||
import cpw.mods.fml.common.asm.FMLSanityChecker;
|
||||
import cpw.mods.fml.common.registry.GameData;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.common.registry.ItemData;
|
||||
@@ -123,4 +127,15 @@ public class FMLDummyContainer extends DummyModContainer implements WorldAccessC
|
||||
Certificate[] certificates = getClass().getProtectionDomain().getCodeSource().getCertificates();
|
||||
return certificates != null ? certificates[0] : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public File getSource()
|
||||
{
|
||||
return FMLSanityChecker.fmlLocation;
|
||||
}
|
||||
@Override
|
||||
public Class<?> getCustomResourcePackClass()
|
||||
{
|
||||
return getSource().isDirectory() ? FMLFolderResourcePack.class : FMLFileResourcePack.class;
|
||||
}
|
||||
}
|
||||
@@ -89,6 +89,7 @@ public class FMLModContainer implements ModContainer
|
||||
private DefaultArtifactVersion processedVersion;
|
||||
private boolean isNetworkMod;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
private static final BiMap<Class<? extends FMLEvent>, Class<? extends Annotation>> modAnnotationTypes = ImmutableBiMap.<Class<? extends FMLEvent>, Class<? extends Annotation>>builder()
|
||||
.put(FMLPreInitializationEvent.class, Mod.PreInit.class)
|
||||
.put(FMLInitializationEvent.class, Mod.Init.class)
|
||||
@@ -342,7 +343,7 @@ public class FMLModContainer implements ModContainer
|
||||
if (m.getParameterTypes().length == 1 && modAnnotationTypes.containsKey(m.getParameterTypes()[0]))
|
||||
{
|
||||
m.setAccessible(true);
|
||||
eventMethods.put((Class<? extends FMLEvent>) m.getParameterTypes()[1],m);
|
||||
eventMethods.put((Class<? extends FMLEvent>) m.getParameterTypes()[0],m);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -595,4 +596,17 @@ public class FMLModContainer implements ModContainer
|
||||
{
|
||||
return customModProperties;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getCustomResourcePackClass()
|
||||
{
|
||||
try
|
||||
{
|
||||
return getSource().isDirectory() ? Class.forName("cpw.mods.fml.client.FMLFolderResourcePack", true, getClass().getClassLoader()) : Class.forName("cpw.mods.fml.client.FMLFileResourcePack",true, getClass().getClassLoader());
|
||||
}
|
||||
catch (ClassNotFoundException e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
@@ -62,4 +62,10 @@ public interface IFMLSidedHandler
|
||||
boolean shouldServerShouldBeKilledQuietly();
|
||||
|
||||
void disconnectIDMismatch(MapDifference<Integer, ItemData> s, NetHandler toKill, INetworkManager mgr);
|
||||
|
||||
void addModAsResource(ModContainer container);
|
||||
|
||||
void updateResourcePackList();
|
||||
|
||||
String getCurrentLanguage();
|
||||
}
|
||||
@@ -30,7 +30,7 @@ public class InjectedModContainer implements ModContainer
|
||||
|
||||
public InjectedModContainer(ModContainer mc, File source)
|
||||
{
|
||||
this.source = source;
|
||||
this.source = source != null ? source : new File("minecraft.jar");
|
||||
this.wrappedContainer = mc;
|
||||
}
|
||||
|
||||
@@ -161,4 +161,10 @@ public class InjectedModContainer implements ModContainer
|
||||
{
|
||||
return wrappedContainer.getCustomModProperties();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getCustomResourcePackClass()
|
||||
{
|
||||
return wrappedContainer.getCustomResourcePackClass();
|
||||
}
|
||||
}
|
||||
@@ -84,6 +84,7 @@ public class LoadController
|
||||
activeModList.add(mod);
|
||||
modStates.put(mod.getModId(), ModState.UNLOADED);
|
||||
eventBus.put(mod.getModId(), bus);
|
||||
FMLCommonHandler.instance().addModToResourcePack(mod);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -94,6 +95,7 @@ public class LoadController
|
||||
}
|
||||
|
||||
eventChannels = eventBus.build();
|
||||
FMLCommonHandler.instance().updateResourcePackList();
|
||||
}
|
||||
|
||||
public void distributeStateMessage(LoaderState state, Object... eventData)
|
||||
|
||||
@@ -322,7 +322,6 @@ public class Loader
|
||||
FMLLog.fine("Building injected Mod Containers %s", injectedContainers);
|
||||
// Add in the MCP mod container
|
||||
mods.add(new InjectedModContainer(mcp,new File("minecraft.jar")));
|
||||
File coremod = new File(minecraftDir,"coremods");
|
||||
for (String cont : injectedContainers)
|
||||
{
|
||||
ModContainer mc;
|
||||
@@ -335,7 +334,7 @@ public class Loader
|
||||
FMLLog.log(Level.SEVERE, e, "A problem occured instantiating the injected mod container %s", cont);
|
||||
throw new LoaderException(e);
|
||||
}
|
||||
mods.add(new InjectedModContainer(mc,coremod));
|
||||
mods.add(new InjectedModContainer(mc,mc.getSource()));
|
||||
}
|
||||
ModDiscoverer discoverer = new ModDiscoverer();
|
||||
FMLLog.fine("Attempting to load mods contained in the minecraft jar file and associated classes");
|
||||
@@ -344,6 +343,12 @@ public class Loader
|
||||
|
||||
FMLLog.info("Searching %s for mods", canonicalModsDir.getAbsolutePath());
|
||||
discoverer.findModDirMods(canonicalModsDir);
|
||||
File versionSpecificModsDir = new File(canonicalModsDir,mccversion);
|
||||
if (versionSpecificModsDir.isDirectory())
|
||||
{
|
||||
FMLLog.info("Also searching %s for mods", versionSpecificModsDir);
|
||||
discoverer.findModDirMods(versionSpecificModsDir);
|
||||
}
|
||||
|
||||
mods.addAll(discoverer.identifyMods());
|
||||
identifyDuplicates(mods);
|
||||
|
||||
@@ -20,6 +20,7 @@ import java.lang.annotation.Target;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.network.packet.Packet250CustomPayload;
|
||||
|
||||
import cpw.mods.fml.common.event.FMLEvent;
|
||||
import cpw.mods.fml.common.event.FMLFingerprintViolationEvent;
|
||||
import cpw.mods.fml.common.event.FMLInitializationEvent;
|
||||
import cpw.mods.fml.common.event.FMLInterModComms;
|
||||
@@ -68,6 +69,7 @@ import cpw.mods.fml.common.registry.GameRegistry;
|
||||
* // Do stuff in pre-init phase (read config, create blocks and items, register them)
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* @author cpw
|
||||
@@ -422,7 +424,7 @@ public @interface Mod
|
||||
*
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.FIELD)
|
||||
@Target(ElementType.METHOD)
|
||||
public @interface InstanceFactory {
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@ import java.net.URLClassLoader;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import net.minecraft.launchwrapper.IClassTransformer;
|
||||
import net.minecraft.launchwrapper.LaunchClassLoader;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
@@ -82,8 +83,21 @@ public class ModClassLoader extends URLClassLoader
|
||||
|
||||
public Class<? extends BaseModProxy> loadBaseModClass(String modClazzName) throws Exception
|
||||
{
|
||||
AccessTransformer transformer = (AccessTransformer)mainClassLoader.getTransformers().get(0);
|
||||
transformer.ensurePublicAccessFor(modClazzName);
|
||||
AccessTransformer accessTransformer = null;
|
||||
for (IClassTransformer transformer : mainClassLoader.getTransformers())
|
||||
{
|
||||
if (transformer instanceof AccessTransformer)
|
||||
{
|
||||
accessTransformer = (AccessTransformer) transformer;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (accessTransformer == null)
|
||||
{
|
||||
FMLLog.log(Level.SEVERE, "No access transformer found");
|
||||
throw new LoaderException();
|
||||
}
|
||||
accessTransformer.ensurePublicAccessFor(modClazzName);
|
||||
return (Class<? extends BaseModProxy>) Class.forName(modClazzName, true, this);
|
||||
}
|
||||
}
|
||||
@@ -136,4 +136,6 @@ public interface ModContainer
|
||||
|
||||
public static final Map<String,String> EMPTY_PROPERTIES = ImmutableMap.of();
|
||||
Map<String,String> getCustomModProperties();
|
||||
|
||||
public Class<?> getCustomResourcePackClass();
|
||||
}
|
||||
@@ -40,6 +40,7 @@ import java.lang.annotation.Target;
|
||||
* public class ClientProxy extends CommonProxy {
|
||||
* // Override common stuff with client specific stuff here
|
||||
* }
|
||||
* }
|
||||
* </pre>
|
||||
* @author cpw
|
||||
*
|
||||
|
||||
@@ -14,10 +14,13 @@ package cpw.mods.fml.common.asm;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.ObjectInputStream.GetField;
|
||||
import java.io.StringReader;
|
||||
import java.net.JarURLConnection;
|
||||
import java.net.URL;
|
||||
import java.net.URLDecoder;
|
||||
import java.nio.charset.Charset;
|
||||
import java.security.CodeSource;
|
||||
import java.security.cert.CertPath;
|
||||
@@ -32,6 +35,10 @@ import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.jar.JarEntry;
|
||||
import java.util.jar.JarFile;
|
||||
import java.util.logging.Level;
|
||||
import java.util.zip.ZipEntry;
|
||||
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
@@ -42,17 +49,22 @@ import org.objectweb.asm.ClassVisitor;
|
||||
import org.objectweb.asm.FieldVisitor;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
|
||||
import com.google.common.base.Charsets;
|
||||
import com.google.common.io.ByteStreams;
|
||||
|
||||
import cpw.mods.fml.common.CertificateHelper;
|
||||
import cpw.mods.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper;
|
||||
import cpw.mods.fml.common.patcher.ClassPatchManager;
|
||||
import cpw.mods.fml.relauncher.FMLLaunchHandler;
|
||||
import cpw.mods.fml.relauncher.FMLRelaunchLog;
|
||||
import cpw.mods.fml.relauncher.IFMLCallHook;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
|
||||
public class FMLSanityChecker implements IFMLCallHook
|
||||
{
|
||||
private static final String FMLFINGERPRINT = "AE:F6:54:79:96:E9:1B:D1:59:70:6C:B4:6B:F5:4A:89:C5:CE:08:1D".toLowerCase().replace(":","");
|
||||
private static final String FORGEFINGERPRINT = "DE:4C:F8:A3:F3:BC:15:63:58:10:04:4C:39:24:0B:F9:68:04:EA:7D".toLowerCase().replace(":", "");
|
||||
private static final String FMLFINGERPRINT = "51:0A:FB:4C:AF:A4:A0:F2:F5:CF:C5:0E:B4:CC:3C:30:24:4A:E3:8E".toLowerCase().replace(":", "");
|
||||
private static final String FORGEFINGERPRINT = "E3:C3:D5:0C:7C:98:6D:F7:4C:64:5C:0A:C5:46:39:74:1C:90:A5:57".toLowerCase().replace(":", "");
|
||||
private static final String MCFINGERPRINT = "CD:99:95:96:56:F7:53:DC:28:D8:63:B4:67:69:F7:F8:FB:AE:FC:FC".toLowerCase().replace(":", "");
|
||||
static class MLDetectorClassVisitor extends ClassVisitor
|
||||
{
|
||||
private boolean foundMarker = false;
|
||||
@@ -73,14 +85,17 @@ public class FMLSanityChecker implements IFMLCallHook
|
||||
}
|
||||
|
||||
private LaunchClassLoader cl;
|
||||
public static File fmlLocation;
|
||||
|
||||
@Override
|
||||
public Void call() throws Exception
|
||||
{
|
||||
CodeSource codeSource = getClass().getProtectionDomain().getCodeSource();
|
||||
boolean goodFML = false;
|
||||
boolean fmlIsJar = false;
|
||||
if (codeSource.getLocation().getProtocol().equals("jar"))
|
||||
{
|
||||
fmlIsJar = true;
|
||||
Certificate[] certificates = codeSource.getCertificates();
|
||||
if (certificates!=null)
|
||||
{
|
||||
@@ -109,6 +124,88 @@ public class FMLSanityChecker implements IFMLCallHook
|
||||
{
|
||||
goodFML = true;
|
||||
}
|
||||
|
||||
boolean goodMC = FMLLaunchHandler.side() == Side.SERVER; //Server is not signed, so assume it's good.
|
||||
int certCount = 0;
|
||||
try
|
||||
{
|
||||
Class cbr = Class.forName("net.minecraft.client.ClientBrandRetriever",false, cl);
|
||||
codeSource = cbr.getProtectionDomain().getCodeSource();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// Probably a development environment, or the server (the server is not signed)
|
||||
goodMC = true;
|
||||
}
|
||||
JarFile mcJarFile = null;
|
||||
if (fmlIsJar && !goodMC && codeSource.getLocation().getProtocol().equals("jar"))
|
||||
{
|
||||
try
|
||||
{
|
||||
String mcPath = codeSource.getLocation().getPath().substring(5);
|
||||
mcPath = mcPath.substring(0, mcPath.lastIndexOf('!'));
|
||||
mcPath = URLDecoder.decode(mcPath, Charsets.UTF_8.name());
|
||||
mcJarFile = new JarFile(mcPath,true);
|
||||
mcJarFile.getManifest();
|
||||
JarEntry cbrEntry = mcJarFile.getJarEntry("net/minecraft/client/ClientBrandRetriever.class");
|
||||
ByteStreams.toByteArray(mcJarFile.getInputStream(cbrEntry));
|
||||
Certificate[] certificates = cbrEntry.getCertificates();
|
||||
certCount = certificates != null ? certificates.length : 0;
|
||||
if (certificates!=null)
|
||||
{
|
||||
|
||||
for (Certificate cert : certificates)
|
||||
{
|
||||
String fingerprint = CertificateHelper.getFingerprint(cert);
|
||||
if (fingerprint.equals(MCFINGERPRINT))
|
||||
{
|
||||
FMLRelaunchLog.info("Found valid fingerprint for Minecraft. Certificate fingerprint %s", fingerprint);
|
||||
goodMC = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Throwable e)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, e, "A critical error occurred trying to read the minecraft jar file");
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (mcJarFile != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
mcJarFile.close();
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
// Noise
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
goodMC = true;
|
||||
}
|
||||
if (!goodMC)
|
||||
{
|
||||
FMLRelaunchLog.severe("The minecraft jar %s appears to be corrupt! There has been CRITICAL TAMPERING WITH MINECRAFT, it is highly unlikely minecraft will work! STOP NOW, get a clean copy and try again!",codeSource.getLocation().getFile());
|
||||
if (!Boolean.parseBoolean(System.getProperty("fml.ignoreInvalidMinecraftCertificates","false")))
|
||||
{
|
||||
FMLRelaunchLog.severe("For your safety, FML will not launch minecraft. You will need to fetch a clean version of the minecraft jar file");
|
||||
FMLRelaunchLog.severe("Technical information: The class net.minecraft.client.ClientBrandRetriever should have been associated with the minecraft jar file, " +
|
||||
"and should have returned us a valid, intact minecraft jar location. This did not work. Either you have modified the minecraft jar file (if so " +
|
||||
"run the forge installer again), or you are using a base editing jar that is changing this class (and likely others too). If you REALLY " +
|
||||
"want to run minecraft in this configuration, add the flag -Dfml.ignoreInvalidMinecraftCertificates=true to the 'JVM settings' in your launcher profile.");
|
||||
System.exit(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
FMLRelaunchLog.severe("FML has been ordered to ignore the invalid or missing minecraft certificate. This is very likely to cause a problem!");
|
||||
FMLRelaunchLog.severe("Technical information: ClientBrandRetriever was at %s, there were %d certificates for it", codeSource.getLocation(), certCount);
|
||||
}
|
||||
}
|
||||
if (!goodFML)
|
||||
{
|
||||
FMLRelaunchLog.severe("FML appears to be missing any signature data. This is not a good thing");
|
||||
@@ -143,8 +240,8 @@ public class FMLSanityChecker implements IFMLCallHook
|
||||
{
|
||||
cl = (LaunchClassLoader) data.get("classLoader");
|
||||
File mcDir = (File)data.get("mcLocation");
|
||||
fmlLocation = (File)data.get("coremodLocation");
|
||||
FMLDeobfuscatingRemapper.INSTANCE.setup(mcDir, cl, (String) data.get("deobfuscationFileName"));
|
||||
File binpatches = new File(mcDir,"binpatch");
|
||||
ClassPatchManager.INSTANCE.setup(FMLLaunchHandler.side());
|
||||
}
|
||||
|
||||
|
||||
@@ -157,7 +157,6 @@ public class AccessTransformer implements IClassTransformer
|
||||
System.out.printf("Loaded %d rules from AccessTransformer config file %s\n", modifiers.size(), rulesFile);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public byte[] transform(String name, String transformedName, byte[] bytes)
|
||||
{
|
||||
@@ -212,7 +211,7 @@ public class AccessTransformer implements IClassTransformer
|
||||
}
|
||||
if (m.desc.isEmpty())
|
||||
{
|
||||
for (FieldNode n : (List<FieldNode>) classNode.fields)
|
||||
for (FieldNode n : classNode.fields)
|
||||
{
|
||||
if (n.name.equals(m.name) || m.name.equals("*"))
|
||||
{
|
||||
@@ -231,7 +230,7 @@ public class AccessTransformer implements IClassTransformer
|
||||
}
|
||||
else
|
||||
{
|
||||
for (MethodNode n : (List<MethodNode>) classNode.methods)
|
||||
for (MethodNode n : classNode.methods)
|
||||
{
|
||||
if ((n.name.equals(m.name) && n.desc.equals(m.desc)) || m.name.equals("*"))
|
||||
{
|
||||
|
||||
@@ -334,11 +334,10 @@ public class MCPMerger
|
||||
return ann;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private static Hashtable<String, ZipEntry> getClassEntries(ZipFile inFile, ZipOutputStream outFile) throws IOException
|
||||
{
|
||||
Hashtable<String, ZipEntry> ret = new Hashtable<String, ZipEntry>();
|
||||
for (ZipEntry entry : Collections.list((Enumeration<ZipEntry>)inFile.entries()))
|
||||
for (ZipEntry entry : Collections.list(inFile.entries()))
|
||||
{
|
||||
if (entry.isDirectory())
|
||||
{
|
||||
@@ -423,7 +422,6 @@ public class MCPMerger
|
||||
return classNode;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private static void processFields(ClassNode cClass, ClassNode sClass, ClassInfo info)
|
||||
{
|
||||
List<FieldNode> cFields = cClass.fields;
|
||||
@@ -537,7 +535,6 @@ public class MCPMerger
|
||||
return Objects.toStringHelper(this).add("name", node.name).add("desc",node.desc).add("server",server).add("client",client).toString();
|
||||
}
|
||||
}
|
||||
@SuppressWarnings("unchecked")
|
||||
private static void processMethods(ClassNode cClass, ClassNode sClass, ClassInfo info)
|
||||
{
|
||||
List<MethodNode> cMethods = (List<MethodNode>)cClass.methods;
|
||||
|
||||
@@ -97,7 +97,6 @@ public class MarkerTransformer implements IClassTransformer
|
||||
});
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public byte[] transform(String name, String transformedName, byte[] bytes)
|
||||
{
|
||||
|
||||
@@ -32,7 +32,6 @@ public class SideTransformer implements IClassTransformer
|
||||
{
|
||||
private static String SIDE = FMLLaunchHandler.side().name();
|
||||
private static final boolean DEBUG = false;
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public byte[] transform(String name, String transformedName, byte[] bytes)
|
||||
{
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
@@ -14,10 +14,10 @@ package cpw.mods.fml.common.discovery;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.jar.JarFile;
|
||||
import java.util.logging.Level;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipFile;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
@@ -35,11 +35,16 @@ public class JarDiscoverer implements ITypeDiscoverer
|
||||
{
|
||||
List<ModContainer> foundMods = Lists.newArrayList();
|
||||
FMLLog.fine("Examining file %s for potential mods", candidate.getModContainer().getName());
|
||||
ZipFile jar = null;
|
||||
JarFile jar = null;
|
||||
try
|
||||
{
|
||||
jar = new ZipFile(candidate.getModContainer());
|
||||
jar = new JarFile(candidate.getModContainer());
|
||||
|
||||
if (jar.getManifest()!=null && (jar.getManifest().getMainAttributes().get("FMLCorePlugin") != null || jar.getManifest().getMainAttributes().get("TweakClass") != null))
|
||||
{
|
||||
FMLLog.finest("Ignoring coremod or tweak system %s", candidate.getModContainer());
|
||||
return foundMods;
|
||||
}
|
||||
ZipEntry modInfo = jar.getEntry("mcmod.info");
|
||||
MetadataCollection mc = null;
|
||||
if (modInfo != null)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
@@ -41,7 +41,14 @@ public class ModDiscoverer
|
||||
|
||||
public void findClasspathMods(ModClassLoader modClassLoader)
|
||||
{
|
||||
List<String> knownLibraries = ImmutableList.<String>builder().addAll(modClassLoader.getDefaultLibraries()).addAll(CoreModManager.getLibraries()).build();
|
||||
List<String> knownLibraries = ImmutableList.<String>builder()
|
||||
// skip default libs
|
||||
.addAll(modClassLoader.getDefaultLibraries())
|
||||
// skip loaded coremods
|
||||
.addAll(CoreModManager.getLoadedCoremods())
|
||||
// skip reparse coremods here
|
||||
.addAll(CoreModManager.getReparseableCoremods())
|
||||
.build();
|
||||
File[] minecraftSources = modClassLoader.getParentSources();
|
||||
if (minecraftSources.length == 1 && minecraftSources[0].isFile())
|
||||
{
|
||||
@@ -82,7 +89,12 @@ public class ModDiscoverer
|
||||
|
||||
for (File modFile : modList)
|
||||
{
|
||||
if (modFile.isDirectory())
|
||||
// skip loaded coremods
|
||||
if (CoreModManager.getLoadedCoremods().contains(modFile.getName()))
|
||||
{
|
||||
FMLLog.finer("Skipping already parsed coremod or tweaker %s", modFile.getName());
|
||||
}
|
||||
else if (modFile.isDirectory())
|
||||
{
|
||||
FMLLog.fine("Found a candidate mod directory %s", modFile.getName());
|
||||
candidates.add(new ModCandidate(modFile, modFile, ContainerType.DIR));
|
||||
|
||||
@@ -13,6 +13,11 @@ public class FMLServerTweaker extends FMLTweaker {
|
||||
@Override
|
||||
public void injectIntoClassLoader(LaunchClassLoader classLoader)
|
||||
{
|
||||
classLoader.addTransformerExclusion("cpw.mods.fml.repackage.");
|
||||
classLoader.addTransformerExclusion("cpw.mods.fml.relauncher.");
|
||||
classLoader.addTransformerExclusion("cpw.mods.fml.common.asm.transformers.");
|
||||
classLoader.addClassLoaderExclusion("LZMA.");
|
||||
FMLLaunchHandler.configureForServerLaunch(classLoader, this);
|
||||
FMLLaunchHandler.appendCoreMods();
|
||||
}
|
||||
}
|
||||
@@ -3,16 +3,26 @@ package cpw.mods.fml.common.launcher;
|
||||
import java.io.File;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import joptsimple.ArgumentAcceptingOptionSpec;
|
||||
import joptsimple.NonOptionArgumentSpec;
|
||||
import joptsimple.OptionParser;
|
||||
import joptsimple.OptionSet;
|
||||
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.base.Throwables;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.ObjectArrays;
|
||||
|
||||
import cpw.mods.fml.relauncher.FMLLaunchHandler;
|
||||
|
||||
import net.minecraft.launchwrapper.ITweaker;
|
||||
import net.minecraft.launchwrapper.Launch;
|
||||
import net.minecraft.launchwrapper.LaunchClassLoader;
|
||||
|
||||
public class FMLTweaker implements ITweaker {
|
||||
@@ -21,15 +31,14 @@ public class FMLTweaker implements ITweaker {
|
||||
private File assetsDir;
|
||||
private String profile;
|
||||
private static URI jarLocation;
|
||||
private String[] array;
|
||||
|
||||
@Override
|
||||
public void acceptOptions(List<String> args, File gameDir, File assetsDir, String profile)
|
||||
{
|
||||
this.args = args;
|
||||
this.gameDir = (gameDir == null ? new File(".") : gameDir);
|
||||
this.assetsDir = assetsDir;
|
||||
this.profile = profile;
|
||||
this.args = args;
|
||||
try
|
||||
{
|
||||
jarLocation = getClass().getProtectionDomain().getCodeSource().getLocation().toURI();
|
||||
@@ -49,6 +58,7 @@ public class FMLTweaker implements ITweaker {
|
||||
classLoader.addTransformerExclusion("cpw.mods.fml.common.asm.transformers.");
|
||||
classLoader.addClassLoaderExclusion("LZMA.");
|
||||
FMLLaunchHandler.configureForClientLaunch(classLoader, this);
|
||||
FMLLaunchHandler.appendCoreMods();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -60,30 +70,27 @@ public class FMLTweaker implements ITweaker {
|
||||
@Override
|
||||
public String[] getLaunchArguments()
|
||||
{
|
||||
String[] array = args.toArray(new String[args.size()]);
|
||||
List<String> blackboardArgs = (List<String>) Launch.blackboard.get("ArgumentList");
|
||||
|
||||
if (gameDir != null)
|
||||
String[] launchArgsArray = args.toArray(new String[args.size()]);
|
||||
|
||||
if (gameDir != null && !blackboardArgs.contains("--gameDir"))
|
||||
{
|
||||
array = ObjectArrays.concat(gameDir.getAbsolutePath(),array);
|
||||
array = ObjectArrays.concat("--gameDir",array);
|
||||
launchArgsArray = ObjectArrays.concat(gameDir.getAbsolutePath(),launchArgsArray);
|
||||
launchArgsArray = ObjectArrays.concat("--gameDir",launchArgsArray);
|
||||
}
|
||||
|
||||
if (assetsDir != null)
|
||||
if (assetsDir != null && !blackboardArgs.contains("--assetsDir"))
|
||||
{
|
||||
array = ObjectArrays.concat(assetsDir.getAbsolutePath(),array);
|
||||
array = ObjectArrays.concat("--assetsDir",array);
|
||||
launchArgsArray = ObjectArrays.concat(assetsDir.getAbsolutePath(),launchArgsArray);
|
||||
launchArgsArray = ObjectArrays.concat("--assetsDir",launchArgsArray);
|
||||
}
|
||||
if (profile != null)
|
||||
if (!blackboardArgs.contains("--version"))
|
||||
{
|
||||
array = ObjectArrays.concat(profile,array);
|
||||
array = ObjectArrays.concat("--version",array);
|
||||
launchArgsArray = ObjectArrays.concat(profile != null ? profile : "UnknownFMLProfile",launchArgsArray);
|
||||
launchArgsArray = ObjectArrays.concat("--version",launchArgsArray);
|
||||
}
|
||||
else
|
||||
{
|
||||
array = ObjectArrays.concat("UnknownFMLProfile",array);
|
||||
array = ObjectArrays.concat("--version",array);
|
||||
}
|
||||
return array;
|
||||
return launchArgsArray;
|
||||
}
|
||||
|
||||
public File getGameDir()
|
||||
@@ -96,4 +103,10 @@ public class FMLTweaker implements ITweaker {
|
||||
return jarLocation;
|
||||
}
|
||||
|
||||
public void injectCascadingTweak(String tweakClassName)
|
||||
{
|
||||
List<String> tweakClasses = (List<String>) Launch.blackboard.get("TweakClasses");
|
||||
tweakClasses.add(tweakClassName);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -28,7 +28,7 @@ public class ModLoaderFuelHelper implements IFuelHandler
|
||||
@Override
|
||||
public int getBurnTime(ItemStack fuel)
|
||||
{
|
||||
return mod.addFuel(fuel.field_77993_c, fuel.field_77993_c);
|
||||
return mod.addFuel(fuel.field_77993_c, fuel.func_77960_j());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -621,4 +621,10 @@ public class ModLoaderModContainer implements ModContainer
|
||||
{
|
||||
return EMPTY_PROPERTIES;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getCustomResourcePackClass()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -6,12 +6,14 @@ public class ClassPatch {
|
||||
public final String targetClassName;
|
||||
public final boolean existsAtTarget;
|
||||
public final byte[] patch;
|
||||
public ClassPatch(String name, String sourceClassName, String targetClassName, boolean existsAtTarget, byte[] patch)
|
||||
public final int inputChecksum;
|
||||
public ClassPatch(String name, String sourceClassName, String targetClassName, boolean existsAtTarget, int inputChecksum, byte[] patch)
|
||||
{
|
||||
this.name = name;
|
||||
this.sourceClassName = sourceClassName;
|
||||
this.targetClassName = targetClassName;
|
||||
this.existsAtTarget = existsAtTarget;
|
||||
this.inputChecksum = inputChecksum;
|
||||
this.patch = patch;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,11 +26,11 @@ import com.google.common.base.Strings;
|
||||
import com.google.common.base.Throwables;
|
||||
import com.google.common.collect.ArrayListMultimap;
|
||||
import com.google.common.collect.ListMultimap;
|
||||
import com.google.common.hash.Hashing;
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import com.google.common.io.Files;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.launcher.FMLTweaker;
|
||||
import cpw.mods.fml.relauncher.FMLRelaunchLog;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
@@ -39,11 +39,19 @@ import cpw.mods.fml.repackage.com.nothome.delta.GDiffPatcher;
|
||||
public class ClassPatchManager {
|
||||
public static final ClassPatchManager INSTANCE = new ClassPatchManager();
|
||||
|
||||
public static final boolean dumpPatched = Boolean.parseBoolean(System.getProperty("fml.dumpPatchedClasses", "false"));
|
||||
|
||||
private GDiffPatcher patcher = new GDiffPatcher();
|
||||
private ListMultimap<String, ClassPatch> patches;
|
||||
|
||||
private File tempDir;
|
||||
private ClassPatchManager()
|
||||
{
|
||||
|
||||
if (dumpPatched)
|
||||
{
|
||||
tempDir = Files.createTempDir();
|
||||
FMLRelaunchLog.info("Dumping patched classes to %s",tempDir.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
|
||||
public byte[] applyPatch(String name, String mappedName, byte[] inputData)
|
||||
@@ -57,11 +65,13 @@ public class ClassPatchManager {
|
||||
{
|
||||
return inputData;
|
||||
}
|
||||
boolean ignoredError = false;
|
||||
FMLRelaunchLog.fine("Runtime patching class %s (input size %d), found %d patch%s", mappedName, (inputData == null ? 0 : inputData.length), list.size(), list.size()!=1 ? "es" : "");
|
||||
for (ClassPatch patch: list)
|
||||
{
|
||||
if (!patch.targetClassName.equals(mappedName))
|
||||
{
|
||||
FMLLog.warning("Binary patch found %s for wrong class %s", patch.targetClassName, mappedName);
|
||||
FMLRelaunchLog.warning("Binary patch found %s for wrong class %s", patch.targetClassName, mappedName);
|
||||
}
|
||||
if (!patch.existsAtTarget && (inputData == null || inputData.length == 0))
|
||||
{
|
||||
@@ -69,7 +79,26 @@ public class ClassPatchManager {
|
||||
}
|
||||
else if (!patch.existsAtTarget)
|
||||
{
|
||||
FMLLog.warning("Patcher expecting empty class data file for %s, but received non-empty", patch.targetClassName);
|
||||
FMLRelaunchLog.warning("Patcher expecting empty class data file for %s, but received non-empty", patch.targetClassName);
|
||||
}
|
||||
else
|
||||
{
|
||||
int inputChecksum = Hashing.adler32().hashBytes(inputData).asInt();
|
||||
if (patch.inputChecksum != inputChecksum)
|
||||
{
|
||||
FMLRelaunchLog.severe("There is a binary discrepency between the expected input class %s (%s) and the actual class. Checksum on disk is %x, in patch %x. Things are probably about to go very wrong. Did you put something into the jar file?", mappedName, name, inputChecksum, patch.inputChecksum);
|
||||
if (!Boolean.parseBoolean(System.getProperty("fml.ignorePatchDiscrepancies","false")))
|
||||
{
|
||||
FMLRelaunchLog.severe("The game is going to exit, because this is a critical error, and it is very improbable that the modded game will work, please obtain clean jar files.");
|
||||
System.exit(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
FMLRelaunchLog.severe("FML is going to ignore this error, note that the patch will not be applied, and there is likely to be a malfunctioning behaviour, including not running at all");
|
||||
ignoredError = true;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
synchronized (patcher)
|
||||
{
|
||||
@@ -79,12 +108,26 @@ public class ClassPatchManager {
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
FMLLog.log(Level.SEVERE, e, "Encountered problem runtime patching class %s", name);
|
||||
FMLRelaunchLog.log(Level.SEVERE, e, "Encountered problem runtime patching class %s", name);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
FMLLog.fine("Successfully applied runtime patches for %s", mappedName);
|
||||
if (!ignoredError)
|
||||
{
|
||||
FMLRelaunchLog.fine("Successfully applied runtime patches for %s (new size %d)", mappedName, inputData.length);
|
||||
}
|
||||
if (dumpPatched)
|
||||
{
|
||||
try
|
||||
{
|
||||
Files.write(inputData, new File(tempDir,mappedName));
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, e, "Failed to write %s to %s", mappedName, tempDir.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
return inputData;
|
||||
}
|
||||
|
||||
@@ -97,7 +140,7 @@ public class ClassPatchManager {
|
||||
InputStream binpatchesCompressed = getClass().getResourceAsStream("/binpatches.pack.lzma");
|
||||
if (binpatchesCompressed==null)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, "The binary patch set is missing. Things are probably about to go very wrong.");
|
||||
FMLRelaunchLog.log(Level.SEVERE, "The binary patch set is missing. Either you are in a development environment, or things are not going to work!");
|
||||
return;
|
||||
}
|
||||
LzmaInputStream binpatchesDecompressed = new LzmaInputStream(binpatchesCompressed);
|
||||
@@ -108,7 +151,7 @@ public class ClassPatchManager {
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, e, "Error occurred reading binary patches. Problems may occur");
|
||||
FMLRelaunchLog.log(Level.SEVERE, e, "Error occurred reading binary patches. Expect severe problems!");
|
||||
throw Throwables.propagate(e);
|
||||
}
|
||||
|
||||
@@ -140,13 +183,13 @@ public class ClassPatchManager {
|
||||
{
|
||||
}
|
||||
} while (true);
|
||||
FMLLog.fine("Read %d binary patches", patches.size());
|
||||
FMLLog.fine("Patch list :\n\t%s", Joiner.on("\t\n").join(patches.asMap().entrySet()));
|
||||
FMLRelaunchLog.fine("Read %d binary patches", patches.size());
|
||||
FMLRelaunchLog.fine("Patch list :\n\t%s", Joiner.on("\t\n").join(patches.asMap().entrySet()));
|
||||
}
|
||||
|
||||
private ClassPatch readPatch(JarEntry patchEntry, JarInputStream jis)
|
||||
{
|
||||
FMLLog.finest("Reading patch data from %s", patchEntry.getName());
|
||||
FMLRelaunchLog.finest("Reading patch data from %s", patchEntry.getName());
|
||||
ByteArrayDataInput input;
|
||||
try
|
||||
{
|
||||
@@ -154,17 +197,22 @@ public class ClassPatchManager {
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
FMLLog.log(Level.WARNING, e, "Unable to read binpatch file %s - ignoring", patchEntry.getName());
|
||||
FMLRelaunchLog.log(Level.WARNING, e, "Unable to read binpatch file %s - ignoring", patchEntry.getName());
|
||||
return null;
|
||||
}
|
||||
String name = input.readUTF();
|
||||
String sourceClassName = input.readUTF();
|
||||
String targetClassName = input.readUTF();
|
||||
boolean exists = input.readBoolean();
|
||||
int inputChecksum = 0;
|
||||
if (exists)
|
||||
{
|
||||
inputChecksum = input.readInt();
|
||||
}
|
||||
int patchLength = input.readInt();
|
||||
byte[] patchBytes = new byte[patchLength];
|
||||
input.readFully(patchBytes);
|
||||
|
||||
return new ClassPatch(name, sourceClassName, targetClassName, exists, patchBytes);
|
||||
return new ClassPatch(name, sourceClassName, targetClassName, exists, inputChecksum, patchBytes);
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import java.util.logging.Logger;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Iterators;
|
||||
import com.google.common.hash.Hashing;
|
||||
import com.google.common.io.ByteArrayDataOutput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import com.google.common.io.Files;
|
||||
@@ -64,6 +65,7 @@ public class GenDiffSet {
|
||||
|
||||
byte[] diff = delta.compute(vanillaBytes, patchedBytes);
|
||||
|
||||
|
||||
ByteArrayDataOutput diffOut = ByteStreams.newDataOutput(diff.length + 50);
|
||||
// Original name
|
||||
diffOut.writeUTF(name);
|
||||
@@ -73,6 +75,10 @@ public class GenDiffSet {
|
||||
diffOut.writeUTF(targetClassName);
|
||||
// exists at original
|
||||
diffOut.writeBoolean(entry != null);
|
||||
if (entry != null)
|
||||
{
|
||||
diffOut.writeInt(Hashing.adler32().hashBytes(vanillaBytes).asInt());
|
||||
}
|
||||
// length of patch
|
||||
diffOut.writeInt(diff.length);
|
||||
// patch
|
||||
|
||||
@@ -52,6 +52,7 @@ import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.LoaderState;
|
||||
import cpw.mods.fml.common.ModContainer;
|
||||
import cpw.mods.fml.common.registry.GameRegistry.UniqueIdentifier;
|
||||
|
||||
public class GameData {
|
||||
private static Map<Integer, ItemData> idMap = Maps.newHashMap();
|
||||
@@ -362,4 +363,28 @@ public class GameData {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static UniqueIdentifier getUniqueName(Block block)
|
||||
{
|
||||
if (block == null) return null;
|
||||
ItemData itemData = idMap.get(block.field_71990_ca);
|
||||
if (itemData == null || !itemData.isOveridden() || customItemStacks.contains(itemData.getModId(), itemData.getItemType()))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return new UniqueIdentifier(itemData.getModId(), itemData.getItemType());
|
||||
}
|
||||
|
||||
static UniqueIdentifier getUniqueName(Item item)
|
||||
{
|
||||
if (item == null) return null;
|
||||
ItemData itemData = idMap.get(item.field_77779_bT);
|
||||
if (itemData == null || !itemData.isOveridden() || customItemStacks.contains(itemData.getModId(), itemData.getItemType()))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return new UniqueIdentifier(itemData.getModId(), itemData.getItemType());
|
||||
}
|
||||
}
|
||||
@@ -95,10 +95,11 @@ public class GameRegistry
|
||||
Random fmlRandom = new Random(worldSeed);
|
||||
long xSeed = fmlRandom.nextLong() >> 2 + 1L;
|
||||
long zSeed = fmlRandom.nextLong() >> 2 + 1L;
|
||||
fmlRandom.setSeed((xSeed * chunkX + zSeed * chunkZ) ^ worldSeed);
|
||||
long chunkSeed = (xSeed * chunkX + zSeed * chunkZ) ^ worldSeed;
|
||||
|
||||
for (IWorldGenerator generator : worldGenerators)
|
||||
{
|
||||
fmlRandom.setSeed(chunkSeed);
|
||||
generator.generate(fmlRandom, chunkX, chunkZ, world, chunkGenerator, chunkProvider);
|
||||
}
|
||||
}
|
||||
@@ -350,26 +351,55 @@ public class GameRegistry
|
||||
|
||||
public static void onPlayerLogin(EntityPlayer player)
|
||||
{
|
||||
for(IPlayerTracker tracker : playerTrackers)
|
||||
tracker.onPlayerLogin(player);
|
||||
for (IPlayerTracker tracker : playerTrackers)
|
||||
try
|
||||
{
|
||||
tracker.onPlayerLogin(player);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
FMLLog.log(Level.SEVERE, e, "A critical error occured handling the onPlayerLogin event with player tracker %s", tracker.getClass().getName());
|
||||
}
|
||||
}
|
||||
|
||||
public static void onPlayerLogout(EntityPlayer player)
|
||||
{
|
||||
for(IPlayerTracker tracker : playerTrackers)
|
||||
tracker.onPlayerLogout(player);
|
||||
for (IPlayerTracker tracker : playerTrackers)
|
||||
try
|
||||
{
|
||||
tracker.onPlayerLogout(player);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
FMLLog.log(Level.SEVERE, e, "A critical error occured handling the onPlayerLogout event with player tracker %s", tracker.getClass().getName());
|
||||
}
|
||||
}
|
||||
|
||||
public static void onPlayerChangedDimension(EntityPlayer player)
|
||||
{
|
||||
for(IPlayerTracker tracker : playerTrackers)
|
||||
tracker.onPlayerChangedDimension(player);
|
||||
for (IPlayerTracker tracker : playerTrackers)
|
||||
try
|
||||
{
|
||||
tracker.onPlayerChangedDimension(player);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
FMLLog.log(Level.SEVERE, e, "A critical error occured handling the onPlayerChangedDimension event with player tracker %s", tracker.getClass()
|
||||
.getName());
|
||||
}
|
||||
}
|
||||
|
||||
public static void onPlayerRespawn(EntityPlayer player)
|
||||
{
|
||||
for(IPlayerTracker tracker : playerTrackers)
|
||||
tracker.onPlayerRespawn(player);
|
||||
for (IPlayerTracker tracker : playerTrackers)
|
||||
try
|
||||
{
|
||||
tracker.onPlayerRespawn(player);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
FMLLog.log(Level.SEVERE, e, "A critical error occured handling the onPlayerRespawn event with player tracker %s", tracker.getClass().getName());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -430,4 +460,46 @@ public class GameRegistry
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static class UniqueIdentifier
|
||||
{
|
||||
public final String modId;
|
||||
public final String name;
|
||||
UniqueIdentifier(String modId, String name)
|
||||
{
|
||||
this.modId = modId;
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Look up the mod identifier data for a block.
|
||||
* Returns null if there is no mod specified mod identifier data, or it is part of a
|
||||
* custom itemstack definition {@link #registerCustomItemStack}
|
||||
*
|
||||
* Note: uniqueness and persistence is only guaranteed by mods using the game registry
|
||||
* correctly.
|
||||
*
|
||||
* @param block to lookup
|
||||
* @return a {@link UniqueIdentifier} for the block or null
|
||||
*/
|
||||
public static UniqueIdentifier findUniqueIdentifierFor(net.minecraft.block.Block block)
|
||||
{
|
||||
return GameData.getUniqueName(block);
|
||||
}
|
||||
/**
|
||||
* Look up the mod identifier data for an item.
|
||||
* Returns null if there is no mod specified mod identifier data, or it is part of a
|
||||
* custom itemstack definition {@link #registerCustomItemStack}
|
||||
*
|
||||
* Note: uniqueness and persistence is only guaranteed by mods using the game registry
|
||||
* correctly.
|
||||
*
|
||||
* @param item to lookup
|
||||
* @return a {@link UniqueIdentifier} for the item or null
|
||||
*/
|
||||
public static UniqueIdentifier findUniqueIdentifierFor(net.minecraft.item.Item item)
|
||||
{
|
||||
return GameData.getUniqueName(item);
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,7 @@ import java.util.logging.Level;
|
||||
|
||||
import com.google.common.base.Charsets;
|
||||
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.ModContainer;
|
||||
@@ -46,7 +47,7 @@ public class LanguageRegistry
|
||||
|
||||
public String getStringLocalization(String key)
|
||||
{
|
||||
return getStringLocalization(key, Minecraft.func_71410_x().func_135016_M().func_135041_c().func_135034_a());
|
||||
return getStringLocalization(key, FMLCommonHandler.instance().getCurrentLanguage());
|
||||
}
|
||||
|
||||
public String getStringLocalization(String key, String lang)
|
||||
|
||||
@@ -13,15 +13,15 @@
|
||||
package cpw.mods.fml.common.registry;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
import net.minecraft.client.resources.ResourceLocation;
|
||||
import net.minecraft.entity.passive.EntityVillager;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Tuple;
|
||||
import net.minecraft.village.MerchantRecipeList;
|
||||
import net.minecraft.world.gen.structure.ComponentVillageStartPiece;
|
||||
@@ -173,7 +173,7 @@ public class VillagerRegistry
|
||||
@SideOnly(Side.CLIENT)
|
||||
public static ResourceLocation getVillagerSkin(int villagerType, ResourceLocation defaultSkin)
|
||||
{
|
||||
if (instance().newVillagers.containsKey(villagerType))
|
||||
if (instance().newVillagers != null && instance().newVillagers.containsKey(villagerType))
|
||||
{
|
||||
return instance().newVillagers.get(villagerType);
|
||||
}
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
/*
|
||||
* Forge Mod Loader
|
||||
* Copyright (c) 2012-2013 cpw.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
|
||||
package cpw.mods.fml.relauncher;
|
||||
|
||||
public class CoreFMLLibraries implements ILibrarySet
|
||||
{
|
||||
private static String[] libraries = { "argo-small-3.2.jar","guava-14.0-rc3.jar","asm-all-4.1.jar", "bcprov-jdk15on-148.jar", FMLInjectionData.debfuscationDataName(), "scala-library.jar" };
|
||||
private static String[] checksums = { "58912ea2858d168c50781f956fa5b59f0f7c6b51", "931ae21fa8014c3ce686aaa621eae565fefb1a6a", "054986e962b88d8660ae4566475658469595ef58", "960dea7c9181ba0b17e8bab0c06a43f0a5f04e65", FMLInjectionData.deobfuscationDataHash, "458d046151ad179c85429ed7420ffb1eaf6ddf85" };
|
||||
|
||||
@Override
|
||||
public String[] getLibraries()
|
||||
{
|
||||
return libraries;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getHashes()
|
||||
{
|
||||
return checksums;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRootURL()
|
||||
{
|
||||
return System.getProperty("fml.core.libraries.mirror", "http://files.minecraftforge.net/fmllibs/%s");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -13,21 +13,10 @@
|
||||
package cpw.mods.fml.relauncher;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FilenameFilter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InterruptedIOException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.MappedByteBuffer;
|
||||
import java.nio.channels.FileChannel;
|
||||
import java.nio.channels.FileChannel.MapMode;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
@@ -37,23 +26,61 @@ import java.util.jar.Attributes;
|
||||
import java.util.jar.JarFile;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import net.minecraft.launchwrapper.ITweaker;
|
||||
import net.minecraft.launchwrapper.LaunchClassLoader;
|
||||
|
||||
import cpw.mods.fml.common.CertificateHelper;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.base.Throwables;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.ObjectArrays;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.launcher.FMLTweaker;
|
||||
import cpw.mods.fml.common.toposort.TopologicalSort;
|
||||
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.DependsOn;
|
||||
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.MCVersion;
|
||||
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.Name;
|
||||
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.TransformerExclusions;
|
||||
|
||||
public class CoreModManager
|
||||
{
|
||||
private static final Attributes.Name COREMODCONTAINSFMLMOD = new Attributes.Name("FMLCorePluginContainsFMLMod");
|
||||
private static String[] rootPlugins = { "cpw.mods.fml.relauncher.FMLCorePlugin" , "net.minecraftforge.classloading.FMLForgePlugin" };
|
||||
private static List<String> loadedLibraries = new ArrayList<String>();
|
||||
private static Map<IFMLLoadingPlugin, File> pluginLocations;
|
||||
private static List<IFMLLoadingPlugin> loadPlugins;
|
||||
private static List<ILibrarySet> libraries;
|
||||
private static List<String> loadedCoremods = Lists.newArrayList();
|
||||
private static List<FMLPluginWrapper> loadPlugins;
|
||||
private static boolean deobfuscatedEnvironment;
|
||||
private static FMLTweaker tweaker;
|
||||
private static File mcDir;
|
||||
private static List<String> reparsedCoremods = Lists.newArrayList();
|
||||
|
||||
public static void handleLaunch(File mcDir, LaunchClassLoader classLoader)
|
||||
private static class FMLPluginWrapper
|
||||
{
|
||||
public final String name;
|
||||
public final IFMLLoadingPlugin coreModInstance;
|
||||
public final List<String> predepends;
|
||||
public final File location;
|
||||
|
||||
public FMLPluginWrapper(String name, IFMLLoadingPlugin coreModInstance, File location, String... predepends)
|
||||
{
|
||||
super();
|
||||
this.name = name;
|
||||
this.coreModInstance = coreModInstance;
|
||||
this.location = location;
|
||||
this.predepends = Lists.newArrayList(predepends);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return String.format("%s {%s}", this.name, this.predepends);
|
||||
}
|
||||
}
|
||||
|
||||
public static void handleLaunch(File mcDir, LaunchClassLoader classLoader, FMLTweaker tweaker)
|
||||
{
|
||||
CoreModManager.mcDir = mcDir;
|
||||
CoreModManager.tweaker = tweaker;
|
||||
try
|
||||
{
|
||||
// Are we in a 'decompiled' environment?
|
||||
@@ -72,20 +99,21 @@ public class CoreModManager
|
||||
{
|
||||
FMLRelaunchLog.fine("Enabling runtime deobfuscation");
|
||||
}
|
||||
pluginLocations = new HashMap<IFMLLoadingPlugin, File>();
|
||||
loadPlugins = new ArrayList<IFMLLoadingPlugin>();
|
||||
for (String s : rootPlugins)
|
||||
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
FMLRelaunchLog.finest("Adding coremod for loading %s", s);
|
||||
IFMLLoadingPlugin plugin = (IFMLLoadingPlugin) Class.forName(s, true, classLoader).newInstance();
|
||||
loadPlugins.add(plugin);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// HMMM
|
||||
}
|
||||
classLoader.registerTransformer("cpw.mods.fml.common.asm.transformers.PatchingTransformer");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, e, "The patch transformer failed to load! This is critical, loading cannot continue!");
|
||||
throw Throwables.propagate(e);
|
||||
}
|
||||
|
||||
loadPlugins = new ArrayList<FMLPluginWrapper>();
|
||||
for (String rootPluginName : rootPlugins)
|
||||
{
|
||||
loadCoreMod(classLoader, rootPluginName, new File(FMLTweaker.getJarLocation()));
|
||||
}
|
||||
|
||||
if (loadPlugins.isEmpty())
|
||||
@@ -93,249 +121,25 @@ public class CoreModManager
|
||||
throw new RuntimeException("A fatal error has occured - no valid fml load plugin was found - this is a completely corrupt FML installation.");
|
||||
}
|
||||
|
||||
downloadMonitor.updateProgressString("All core mods are successfully located");
|
||||
FMLRelaunchLog.fine("All fundamental core mods are successfully located");
|
||||
// Now that we have the root plugins loaded - lets see what else might be around
|
||||
String commandLineCoremods = System.getProperty("fml.coreMods.load","");
|
||||
for (String s : commandLineCoremods.split(","))
|
||||
for (String coreModClassName : commandLineCoremods.split(","))
|
||||
{
|
||||
if (s.isEmpty())
|
||||
if (coreModClassName.isEmpty())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
FMLRelaunchLog.info("Found a command line coremod : %s", s);
|
||||
try
|
||||
{
|
||||
classLoader.addTransformerExclusion(s);
|
||||
Class<?> coreModClass = Class.forName(s, true, classLoader);
|
||||
TransformerExclusions trExclusions = coreModClass.getAnnotation(IFMLLoadingPlugin.TransformerExclusions.class);
|
||||
if (trExclusions!=null)
|
||||
{
|
||||
for (String st : trExclusions.value())
|
||||
{
|
||||
classLoader.addTransformerExclusion(st);
|
||||
}
|
||||
}
|
||||
IFMLLoadingPlugin plugin = (IFMLLoadingPlugin) coreModClass.newInstance();
|
||||
loadPlugins.add(plugin);
|
||||
if (plugin.getLibraryRequestClass()!=null)
|
||||
{
|
||||
for (String libName : plugin.getLibraryRequestClass())
|
||||
{
|
||||
libraries.add((ILibrarySet) Class.forName(libName, true, classLoader).newInstance());
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Throwable e)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE,e,"Exception occured trying to load coremod %s",s);
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
FMLRelaunchLog.info("Found a command line coremod : %s", coreModClassName);
|
||||
loadCoreMod(classLoader, coreModClassName, null);
|
||||
}
|
||||
discoverCoreMods(mcDir, classLoader, loadPlugins, libraries);
|
||||
discoverCoreMods(mcDir, classLoader);
|
||||
|
||||
List<Throwable> caughtErrors = new ArrayList<Throwable>();
|
||||
try
|
||||
{
|
||||
File libDir;
|
||||
try
|
||||
{
|
||||
libDir = setupLibDir(mcDir);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
caughtErrors.add(e);
|
||||
return;
|
||||
}
|
||||
|
||||
libraries = new ArrayList<ILibrarySet>();
|
||||
for (ILibrarySet lib : libraries)
|
||||
{
|
||||
for (int i=0; i<lib.getLibraries().length; i++)
|
||||
{
|
||||
boolean download = false;
|
||||
String libName = lib.getLibraries()[i];
|
||||
String targFileName = libName.lastIndexOf('/')>=0 ? libName.substring(libName.lastIndexOf('/')) : libName;
|
||||
String checksum = lib.getHashes()[i];
|
||||
File libFile = new File(libDir, targFileName);
|
||||
if (!libFile.exists())
|
||||
{
|
||||
try
|
||||
{
|
||||
downloadFile(libFile, lib.getRootURL(), libName, checksum);
|
||||
download = true;
|
||||
}
|
||||
catch (Throwable e)
|
||||
{
|
||||
caughtErrors.add(e);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (libFile.exists() && !libFile.isFile())
|
||||
{
|
||||
caughtErrors.add(new RuntimeException(String.format("Found a file %s that is not a normal file - you should clear this out of the way", libName)));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!download)
|
||||
{
|
||||
try
|
||||
{
|
||||
FileInputStream fis = new FileInputStream(libFile);
|
||||
FileChannel chan = fis.getChannel();
|
||||
MappedByteBuffer mappedFile = chan.map(MapMode.READ_ONLY, 0, libFile.length());
|
||||
String fileChecksum = generateChecksum(mappedFile);
|
||||
fis.close();
|
||||
// bad checksum and I did not download this file
|
||||
if (!checksum.equals(fileChecksum))
|
||||
{
|
||||
caughtErrors.add(new RuntimeException(String.format("The file %s was found in your lib directory and has an invalid checksum %s (expecting %s) - it is unlikely to be the correct download, please move it out of the way and try again.", libName, fileChecksum, checksum)));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, e, "The library file %s could not be validated", libFile.getName());
|
||||
caughtErrors.add(new RuntimeException(String.format("The library file %s could not be validated", libFile.getName()),e));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (!download)
|
||||
{
|
||||
downloadMonitor.updateProgressString("Found library file %s present and correct in lib dir", libName);
|
||||
}
|
||||
else
|
||||
{
|
||||
downloadMonitor.updateProgressString("Library file %s was downloaded and verified successfully", libName);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
classLoader.addURL(libFile.toURI().toURL());
|
||||
loadedLibraries.add(libName);
|
||||
}
|
||||
catch (MalformedURLException e)
|
||||
{
|
||||
caughtErrors.add(new RuntimeException(String.format("Should never happen - %s is broken - probably a somehow corrupted download. Delete it and try again.", libFile.getName()), e));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (downloadMonitor.shouldStopIt())
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!caughtErrors.isEmpty())
|
||||
{
|
||||
FMLRelaunchLog.severe("There were errors during initial FML setup. " +
|
||||
"Some files failed to download or were otherwise corrupted. " +
|
||||
"You will need to manually obtain the following files from " +
|
||||
"these download links and ensure your lib directory is clean. ");
|
||||
for (ILibrarySet set : libraries)
|
||||
{
|
||||
for (String file : set.getLibraries())
|
||||
{
|
||||
FMLRelaunchLog.severe("*** Download "+set.getRootURL(), file);
|
||||
}
|
||||
}
|
||||
FMLRelaunchLog.severe("<===========>");
|
||||
FMLRelaunchLog.severe("The following is the errors that caused the setup to fail. " +
|
||||
"They may help you diagnose and resolve the issue");
|
||||
for (Throwable t : caughtErrors)
|
||||
{
|
||||
if (t.getMessage()!=null)
|
||||
{
|
||||
FMLRelaunchLog.severe(t.getMessage());
|
||||
}
|
||||
}
|
||||
FMLRelaunchLog.severe("<<< ==== >>>");
|
||||
FMLRelaunchLog.severe("The following is diagnostic information for developers to review.");
|
||||
for (Throwable t : caughtErrors)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, t, "Error details");
|
||||
}
|
||||
throw new RuntimeException("A fatal error occured and FML cannot continue");
|
||||
}
|
||||
}
|
||||
|
||||
for (IFMLLoadingPlugin plug : loadPlugins)
|
||||
{
|
||||
if (plug.getASMTransformerClass()!=null)
|
||||
{
|
||||
for (String xformClass : plug.getASMTransformerClass())
|
||||
{
|
||||
FMLRelaunchLog.finest("Registering transformer %s", xformClass);
|
||||
classLoader.registerTransformer(xformClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Deobfuscation transformer, always last
|
||||
if (!deobfuscatedEnvironment)
|
||||
{
|
||||
classLoader.registerTransformer("cpw.mods.fml.common.asm.transformers.DeobfuscationTransformer");
|
||||
}
|
||||
downloadMonitor.updateProgressString("Running coremod plugins");
|
||||
Map<String,Object> data = new HashMap<String,Object>();
|
||||
data.put("mcLocation", mcDir);
|
||||
data.put("coremodList", loadPlugins);
|
||||
data.put("runtimeDeobfuscationEnabled", !deobfuscatedEnvironment);
|
||||
for (IFMLLoadingPlugin plugin : loadPlugins)
|
||||
{
|
||||
downloadMonitor.updateProgressString("Running coremod plugin %s", plugin.getClass().getSimpleName());
|
||||
data.put("coremodLocation", pluginLocations.get(plugin));
|
||||
plugin.injectData(data);
|
||||
String setupClass = plugin.getSetupClass();
|
||||
if (setupClass != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
IFMLCallHook call = (IFMLCallHook) Class.forName(setupClass, true, classLoader).newInstance();
|
||||
Map<String,Object> callData = new HashMap<String, Object>();
|
||||
callData.put("mcLocation", mcDir);
|
||||
callData.put("classLoader", classLoader);
|
||||
callData.put("coremodLocation", pluginLocations.get(plugin));
|
||||
callData.put("deobfuscationFileName", FMLInjectionData.debfuscationDataName());
|
||||
call.injectData(callData);
|
||||
call.call();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
downloadMonitor.updateProgressString("Coremod plugin %s run successfully", plugin.getClass().getSimpleName());
|
||||
|
||||
String modContainer = plugin.getModContainerClass();
|
||||
if (modContainer != null)
|
||||
{
|
||||
FMLInjectionData.containers.add(modContainer);
|
||||
}
|
||||
}
|
||||
try
|
||||
{
|
||||
downloadMonitor.updateProgressString("Validating minecraft");
|
||||
Class<?> loaderClazz = Class.forName("cpw.mods.fml.common.Loader", true, classLoader);
|
||||
Method m = loaderClazz.getMethod("injectData", Object[].class);
|
||||
m.invoke(null, (Object)FMLInjectionData.data());
|
||||
m = loaderClazz.getMethod("instance");
|
||||
m.invoke(null);
|
||||
downloadMonitor.updateProgressString("Minecraft validated, launching...");
|
||||
downloadBuffer = null;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// Load in the Loader, make sure he's ready to roll - this will initialize most of the rest of minecraft here
|
||||
System.out.println("A CRITICAL PROBLEM OCCURED INITIALIZING MINECRAFT - LIKELY YOU HAVE AN INCORRECT VERSION FOR THIS FML");
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static void discoverCoreMods(File mcDir, LaunchClassLoader classLoader, List<IFMLLoadingPlugin> loadPlugins, List<ILibrarySet> libraries)
|
||||
private static void discoverCoreMods(File mcDir, LaunchClassLoader classLoader)
|
||||
{
|
||||
downloadMonitor.updateProgressString("Discovering coremods");
|
||||
FMLRelaunchLog.fine("Discovering coremods");
|
||||
File coreMods = setupCoreModDir(mcDir);
|
||||
FilenameFilter ff = new FilenameFilter()
|
||||
{
|
||||
@@ -346,149 +150,100 @@ public class CoreModManager
|
||||
}
|
||||
};
|
||||
File[] coreModList = coreMods.listFiles(ff);
|
||||
File versionedModDir = new File(coreMods,FMLInjectionData.mccversion);
|
||||
if (versionedModDir.isDirectory())
|
||||
{
|
||||
File[] versionedCoreMods = versionedModDir.listFiles(ff);
|
||||
coreModList = ObjectArrays.concat(coreModList,versionedCoreMods, File.class);
|
||||
}
|
||||
|
||||
Arrays.sort(coreModList);
|
||||
|
||||
for (File coreMod : coreModList)
|
||||
{
|
||||
downloadMonitor.updateProgressString("Found a candidate coremod %s", coreMod.getName());
|
||||
JarFile jar;
|
||||
FMLRelaunchLog.fine("Examining for coremod candidacy %s", coreMod.getName());
|
||||
JarFile jar = null;
|
||||
Attributes mfAttributes;
|
||||
try
|
||||
{
|
||||
jar = new JarFile(coreMod);
|
||||
if (jar.getManifest() == null)
|
||||
{
|
||||
FMLRelaunchLog.warning("Found an un-manifested jar file in the coremods folder : %s, it will be ignored.", coreMod.getName());
|
||||
// Not a coremod
|
||||
continue;
|
||||
}
|
||||
mfAttributes = jar.getManifest().getMainAttributes();
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, ioe, "Unable to read the coremod jar file %s - ignoring", coreMod.getName());
|
||||
FMLRelaunchLog.log(Level.SEVERE, ioe, "Unable to read the jar file %s - ignoring", coreMod.getName());
|
||||
continue;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (jar!=null)
|
||||
{
|
||||
try
|
||||
{
|
||||
jar.close();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
// Noise
|
||||
}
|
||||
}
|
||||
}
|
||||
String cascadedTweaker = mfAttributes.getValue("TweakClass");
|
||||
if (cascadedTweaker != null)
|
||||
{
|
||||
FMLRelaunchLog.info("Loading tweaker %s from %s", cascadedTweaker, coreMod.getName());
|
||||
handleCascadingTweak(coreMod, jar, cascadedTweaker, classLoader);
|
||||
loadedCoremods.add(coreMod.getName());
|
||||
continue;
|
||||
}
|
||||
|
||||
String fmlCorePlugin = mfAttributes.getValue("FMLCorePlugin");
|
||||
if (fmlCorePlugin == null)
|
||||
{
|
||||
FMLRelaunchLog.severe("The coremod %s does not contain a valid jar manifest- it will be ignored", coreMod.getName());
|
||||
// Not a coremod
|
||||
FMLRelaunchLog.fine("Not found coremod data in %s", coreMod.getName());
|
||||
continue;
|
||||
}
|
||||
|
||||
// String className = fmlCorePlugin.replace('.', '/').concat(".class");
|
||||
// JarEntry ent = jar.getJarEntry(className);
|
||||
// if (ent ==null)
|
||||
// {
|
||||
// FMLLog.severe("The coremod %s specified %s as it's loading class but it does not include it - it will be ignored", coreMod.getName(), fmlCorePlugin);
|
||||
// continue;
|
||||
// }
|
||||
// try
|
||||
// {
|
||||
// Class<?> coreModClass = Class.forName(fmlCorePlugin, false, classLoader);
|
||||
// FMLLog.severe("The coremods %s specified a class %s that is already present in the classpath - it will be ignored", coreMod.getName(), fmlCorePlugin);
|
||||
// continue;
|
||||
// }
|
||||
// catch (ClassNotFoundException cnfe)
|
||||
// {
|
||||
// // didn't find it, good
|
||||
// }
|
||||
try
|
||||
{
|
||||
classLoader.addURL(coreMod.toURI().toURL());
|
||||
if (!mfAttributes.containsKey(COREMODCONTAINSFMLMOD))
|
||||
{
|
||||
FMLRelaunchLog.finest("Adding %s to the list of known coremods, it will not be examined again", coreMod.getName());
|
||||
loadedCoremods.add(coreMod.getName());
|
||||
}
|
||||
else
|
||||
{
|
||||
FMLRelaunchLog.finest("Found FMLCorePluginContainsFMLMod marker in %s, it will be examined later for regular @Mod instances", coreMod.getName());
|
||||
reparsedCoremods.add(coreMod.getName());
|
||||
}
|
||||
}
|
||||
catch (MalformedURLException e)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, e, "Unable to convert file into a URL. weird");
|
||||
continue;
|
||||
}
|
||||
try
|
||||
{
|
||||
downloadMonitor.updateProgressString("Loading coremod %s", coreMod.getName());
|
||||
classLoader.addTransformerExclusion(fmlCorePlugin);
|
||||
Class<?> coreModClass = Class.forName(fmlCorePlugin, true, classLoader);
|
||||
MCVersion requiredMCVersion = coreModClass.getAnnotation(IFMLLoadingPlugin.MCVersion.class);
|
||||
String version = "";
|
||||
if (requiredMCVersion == null)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.WARNING, "The coremod %s does not have a MCVersion annotation, it may cause issues with this version of Minecraft", fmlCorePlugin);
|
||||
}
|
||||
else
|
||||
{
|
||||
version = requiredMCVersion.value();
|
||||
}
|
||||
if (!"".equals(version) && !FMLInjectionData.mccversion.equals(version))
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, "The coremod %s is requesting minecraft version %s and minecraft is %s. It will be ignored.", fmlCorePlugin, version, FMLInjectionData.mccversion);
|
||||
continue;
|
||||
}
|
||||
else if (!"".equals(version))
|
||||
{
|
||||
FMLRelaunchLog.log(Level.FINE, "The coremod %s requested minecraft version %s and minecraft is %s. It will be loaded.", fmlCorePlugin, version, FMLInjectionData.mccversion);
|
||||
}
|
||||
TransformerExclusions trExclusions = coreModClass.getAnnotation(IFMLLoadingPlugin.TransformerExclusions.class);
|
||||
if (trExclusions!=null)
|
||||
{
|
||||
for (String st : trExclusions.value())
|
||||
{
|
||||
classLoader.addTransformerExclusion(st);
|
||||
}
|
||||
}
|
||||
IFMLLoadingPlugin plugin = (IFMLLoadingPlugin) coreModClass.newInstance();
|
||||
loadPlugins.add(plugin);
|
||||
pluginLocations .put(plugin, coreMod);
|
||||
if (plugin.getLibraryRequestClass()!=null)
|
||||
{
|
||||
for (String libName : plugin.getLibraryRequestClass())
|
||||
{
|
||||
libraries.add((ILibrarySet) Class.forName(libName, true, classLoader).newInstance());
|
||||
}
|
||||
}
|
||||
downloadMonitor.updateProgressString("Loaded coremod %s", coreMod.getName());
|
||||
}
|
||||
catch (ClassNotFoundException cnfe)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, cnfe, "Coremod %s: Unable to class load the plugin %s", coreMod.getName(), fmlCorePlugin);
|
||||
}
|
||||
catch (ClassCastException cce)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, cce, "Coremod %s: The plugin %s is not an implementor of IFMLLoadingPlugin", coreMod.getName(), fmlCorePlugin);
|
||||
}
|
||||
catch (InstantiationException ie)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, ie, "Coremod %s: The plugin class %s was not instantiable", coreMod.getName(), fmlCorePlugin);
|
||||
}
|
||||
catch (IllegalAccessException iae)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, iae, "Coremod %s: The plugin class %s was not accessible", coreMod.getName(), fmlCorePlugin);
|
||||
}
|
||||
loadCoreMod(classLoader, fmlCorePlugin, coreMod);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mcDir the minecraft home directory
|
||||
* @return the lib directory
|
||||
*/
|
||||
private static File setupLibDir(File mcDir)
|
||||
private static void handleCascadingTweak(File coreMod, JarFile jar, String cascadedTweaker, LaunchClassLoader classLoader)
|
||||
{
|
||||
File libDir = new File(mcDir,"lib");
|
||||
try
|
||||
{
|
||||
libDir = libDir.getCanonicalFile();
|
||||
classLoader.addURL(coreMod.toURI().toURL());
|
||||
CoreModManager.tweaker.injectCascadingTweak(cascadedTweaker);
|
||||
}
|
||||
catch (IOException e)
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new RuntimeException(String.format("Unable to canonicalize the lib dir at %s", mcDir.getName()),e);
|
||||
FMLRelaunchLog.log(Level.INFO, e, "There was a problem trying to load the mod dir tweaker %s", coreMod.getAbsolutePath());
|
||||
}
|
||||
if (!libDir.exists())
|
||||
{
|
||||
libDir.mkdir();
|
||||
}
|
||||
else if (libDir.exists() && !libDir.isDirectory())
|
||||
{
|
||||
throw new RuntimeException(String.format("Found a lib file in %s that's not a directory", mcDir.getName()));
|
||||
}
|
||||
return libDir;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -497,7 +252,7 @@ public class CoreModManager
|
||||
*/
|
||||
private static File setupCoreModDir(File mcDir)
|
||||
{
|
||||
File coreModDir = new File(mcDir,"coremods");
|
||||
File coreModDir = new File(mcDir,"mods");
|
||||
try
|
||||
{
|
||||
coreModDir = coreModDir.getCanonicalFile();
|
||||
@@ -517,114 +272,193 @@ public class CoreModManager
|
||||
return coreModDir;
|
||||
}
|
||||
|
||||
private static void downloadFile(File libFile, String rootUrl,String realFilePath, String hash)
|
||||
public static List<String> getLoadedCoremods()
|
||||
{
|
||||
return loadedCoremods;
|
||||
}
|
||||
|
||||
public static List<String> getReparseableCoremods()
|
||||
{
|
||||
return reparsedCoremods;
|
||||
}
|
||||
|
||||
private static FMLPluginWrapper loadCoreMod(LaunchClassLoader classLoader, String coreModClass, File location)
|
||||
{
|
||||
String coreModName = coreModClass.substring(coreModClass.lastIndexOf('.')+1);
|
||||
try
|
||||
{
|
||||
URL libDownload = new URL(String.format(rootUrl,realFilePath));
|
||||
downloadMonitor.updateProgressString("Downloading file %s", libDownload.toString());
|
||||
FMLRelaunchLog.info("Downloading file %s", libDownload.toString());
|
||||
URLConnection connection = libDownload.openConnection();
|
||||
connection.setConnectTimeout(5000);
|
||||
connection.setReadTimeout(5000);
|
||||
connection.setRequestProperty("User-Agent", "FML Relaunch Downloader");
|
||||
int sizeGuess = connection.getContentLength();
|
||||
performDownload(connection.getInputStream(), sizeGuess, hash, libFile);
|
||||
downloadMonitor.updateProgressString("Download complete");
|
||||
FMLRelaunchLog.info("Download complete");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (downloadMonitor.shouldStopIt())
|
||||
FMLRelaunchLog.fine("Instantiating coremod class %s", coreModName);
|
||||
classLoader.addTransformerExclusion(coreModClass);
|
||||
Class<?> coreModClazz = Class.forName(coreModClass, true, classLoader);
|
||||
Name coreModNameAnn = coreModClazz.getAnnotation(IFMLLoadingPlugin.Name.class);
|
||||
if (coreModNameAnn!=null && !Strings.isNullOrEmpty(coreModNameAnn.value()))
|
||||
{
|
||||
FMLRelaunchLog.warning("You have stopped the downloading operation before it could complete");
|
||||
return;
|
||||
coreModName = coreModNameAnn.value();
|
||||
FMLRelaunchLog.finest("coremod named %s is loading", coreModName);
|
||||
}
|
||||
if (e instanceof RuntimeException) throw (RuntimeException)e;
|
||||
FMLRelaunchLog.severe("There was a problem downloading the file %s automatically. Perhaps you " +
|
||||
"have an environment without internet access. You will need to download " +
|
||||
"the file manually or restart and let it try again\n", libFile.getName());
|
||||
libFile.delete();
|
||||
throw new RuntimeException("A download error occured", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static List<String> getLibraries()
|
||||
{
|
||||
return loadedLibraries;
|
||||
}
|
||||
|
||||
private static ByteBuffer downloadBuffer = ByteBuffer.allocateDirect(1 << 23);
|
||||
static IDownloadDisplay downloadMonitor;
|
||||
|
||||
private static void performDownload(InputStream is, int sizeGuess, String validationHash, File target)
|
||||
{
|
||||
if (sizeGuess > downloadBuffer.capacity())
|
||||
{
|
||||
throw new RuntimeException(String.format("The file %s is too large to be downloaded by FML - the coremod is invalid", target.getName()));
|
||||
}
|
||||
downloadBuffer.clear();
|
||||
|
||||
int bytesRead, fullLength = 0;
|
||||
|
||||
downloadMonitor.resetProgress(sizeGuess);
|
||||
try
|
||||
{
|
||||
downloadMonitor.setPokeThread(Thread.currentThread());
|
||||
byte[] smallBuffer = new byte[1024];
|
||||
while ((bytesRead = is.read(smallBuffer)) >= 0) {
|
||||
downloadBuffer.put(smallBuffer, 0, bytesRead);
|
||||
fullLength += bytesRead;
|
||||
if (downloadMonitor.shouldStopIt())
|
||||
MCVersion requiredMCVersion = coreModClazz.getAnnotation(IFMLLoadingPlugin.MCVersion.class);
|
||||
if (!Arrays.asList(rootPlugins).contains(coreModClass) && (requiredMCVersion == null || Strings.isNullOrEmpty(requiredMCVersion.value())))
|
||||
{
|
||||
FMLRelaunchLog.log(Level.WARNING, "The coremod %s does not have a MCVersion annotation, it may cause issues with this version of Minecraft", coreModClass);
|
||||
}
|
||||
else if (requiredMCVersion!=null && !FMLInjectionData.mccversion.equals(requiredMCVersion.value()))
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, "The coremod %s is requesting minecraft version %s and minecraft is %s. It will be ignored.", coreModClass, requiredMCVersion.value(), FMLInjectionData.mccversion);
|
||||
return null;
|
||||
}
|
||||
else if (requiredMCVersion!=null)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.FINE, "The coremod %s requested minecraft version %s and minecraft is %s. It will be loaded.", coreModClass, requiredMCVersion.value(), FMLInjectionData.mccversion);
|
||||
}
|
||||
TransformerExclusions trExclusions = coreModClazz.getAnnotation(IFMLLoadingPlugin.TransformerExclusions.class);
|
||||
if (trExclusions!=null)
|
||||
{
|
||||
for (String st : trExclusions.value())
|
||||
{
|
||||
break;
|
||||
classLoader.addTransformerExclusion(st);
|
||||
}
|
||||
downloadMonitor.updateProgress(fullLength);
|
||||
}
|
||||
is.close();
|
||||
downloadMonitor.setPokeThread(null);
|
||||
downloadBuffer.limit(fullLength);
|
||||
downloadBuffer.position(0);
|
||||
DependsOn deplist = coreModClazz.getAnnotation(IFMLLoadingPlugin.DependsOn.class);
|
||||
String[] dependencies = new String[0];
|
||||
if (deplist != null)
|
||||
{
|
||||
dependencies = deplist.value();
|
||||
}
|
||||
IFMLLoadingPlugin plugin = (IFMLLoadingPlugin) coreModClazz.newInstance();
|
||||
FMLPluginWrapper wrap = new FMLPluginWrapper(coreModName, plugin, location, dependencies);
|
||||
|
||||
loadPlugins.add(wrap);
|
||||
FMLRelaunchLog.fine("Loaded coremod %s", coreModName);
|
||||
return wrap;
|
||||
}
|
||||
catch (InterruptedIOException e)
|
||||
catch (ClassNotFoundException cnfe)
|
||||
{
|
||||
// We were interrupted by the stop button. We're stopping now.. clear interruption flag.
|
||||
Thread.interrupted();
|
||||
return;
|
||||
if (!Lists.newArrayList(rootPlugins).contains(coreModClass))
|
||||
FMLRelaunchLog.log(Level.SEVERE, cnfe, "Coremod %s: Unable to class load the plugin %s", coreModName, coreModClass);
|
||||
else
|
||||
FMLRelaunchLog.fine("Skipping root plugin %s", coreModClass);
|
||||
}
|
||||
catch (IOException e)
|
||||
catch (ClassCastException cce)
|
||||
{
|
||||
throw new RuntimeException(e);
|
||||
FMLRelaunchLog.log(Level.SEVERE, cce, "Coremod %s: The plugin %s is not an implementor of IFMLLoadingPlugin", coreModName, coreModClass);
|
||||
}
|
||||
catch (InstantiationException ie)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, ie, "Coremod %s: The plugin class %s was not instantiable", coreModName, coreModClass);
|
||||
}
|
||||
catch (IllegalAccessException iae)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, iae, "Coremod %s: The plugin class %s was not accessible", coreModName, coreModClass);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static void sortCoreMods()
|
||||
{
|
||||
TopologicalSort.DirectedGraph<FMLPluginWrapper> sortGraph = new TopologicalSort.DirectedGraph<FMLPluginWrapper>();
|
||||
Map<String, FMLPluginWrapper> pluginMap = Maps.newHashMap();
|
||||
for (FMLPluginWrapper plug : loadPlugins)
|
||||
{
|
||||
sortGraph.addNode(plug);
|
||||
pluginMap.put(plug.name, plug);
|
||||
}
|
||||
|
||||
|
||||
for (FMLPluginWrapper plug : loadPlugins)
|
||||
{
|
||||
for (String dep : plug.predepends)
|
||||
{
|
||||
if (!pluginMap.containsKey(dep))
|
||||
{
|
||||
FMLRelaunchLog.log(Level.SEVERE, "Missing coremod dependency - the coremod %s depends on coremod %s which isn't present.", plug.name, dep);
|
||||
throw new RuntimeException();
|
||||
}
|
||||
sortGraph.addEdge(plug, pluginMap.get(dep));
|
||||
}
|
||||
}
|
||||
try
|
||||
{
|
||||
String cksum = generateChecksum(downloadBuffer);
|
||||
if (cksum.equals(validationHash))
|
||||
{
|
||||
downloadBuffer.position(0);
|
||||
FileOutputStream fos = new FileOutputStream(target);
|
||||
fos.getChannel().write(downloadBuffer);
|
||||
fos.close();
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RuntimeException(String.format("The downloaded file %s has an invalid checksum %s (expecting %s). The download did not succeed correctly and the file has been deleted. Please try launching again.", target.getName(), cksum, validationHash));
|
||||
}
|
||||
loadPlugins = TopologicalSort.topologicalSort(sortGraph);
|
||||
FMLRelaunchLog.fine("Sorted coremod list %s", loadPlugins);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (e instanceof RuntimeException) throw (RuntimeException)e;
|
||||
FMLLog.log(Level.SEVERE, e, "There was a problem performing the coremod sort");
|
||||
throw Throwables.propagate(e);
|
||||
}
|
||||
}
|
||||
public static void injectTransformers(LaunchClassLoader classLoader)
|
||||
{
|
||||
|
||||
for (FMLPluginWrapper wrap : loadPlugins)
|
||||
{
|
||||
IFMLLoadingPlugin plug = wrap.coreModInstance;
|
||||
if (plug.getASMTransformerClass()!=null)
|
||||
{
|
||||
for (String xformClass : plug.getASMTransformerClass())
|
||||
{
|
||||
FMLRelaunchLog.finest("Registering transformer %s", xformClass);
|
||||
classLoader.registerTransformer(xformClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
FMLRelaunchLog.fine("Running coremod plugins");
|
||||
Map<String,Object> data = new HashMap<String,Object>();
|
||||
data.put("mcLocation", mcDir);
|
||||
data.put("coremodList", loadPlugins);
|
||||
data.put("runtimeDeobfuscationEnabled", !deobfuscatedEnvironment);
|
||||
for (FMLPluginWrapper pluginWrapper : loadPlugins)
|
||||
{
|
||||
IFMLLoadingPlugin plugin = pluginWrapper.coreModInstance;
|
||||
FMLRelaunchLog.fine("Running coremod plugin %s", pluginWrapper.name);
|
||||
data.put("coremodLocation", pluginWrapper.location);
|
||||
plugin.injectData(data);
|
||||
String setupClass = plugin.getSetupClass();
|
||||
if (setupClass != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
IFMLCallHook call = (IFMLCallHook) Class.forName(setupClass, true, classLoader).newInstance();
|
||||
Map<String,Object> callData = new HashMap<String, Object>();
|
||||
callData.put("mcLocation", mcDir);
|
||||
callData.put("classLoader", classLoader);
|
||||
callData.put("coremodLocation", pluginWrapper.location);
|
||||
callData.put("deobfuscationFileName", FMLInjectionData.debfuscationDataName());
|
||||
call.injectData(callData);
|
||||
call.call();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
FMLRelaunchLog.fine("Coremod plugin %s run successfully", plugin.getClass().getSimpleName());
|
||||
|
||||
String modContainer = plugin.getModContainerClass();
|
||||
if (modContainer != null)
|
||||
{
|
||||
FMLInjectionData.containers.add(modContainer);
|
||||
}
|
||||
}
|
||||
// Deobfuscation transformer, always last
|
||||
if (!deobfuscatedEnvironment)
|
||||
{
|
||||
classLoader.registerTransformer("cpw.mods.fml.common.asm.transformers.DeobfuscationTransformer");
|
||||
}
|
||||
try
|
||||
{
|
||||
FMLRelaunchLog.fine("Validating minecraft");
|
||||
Class<?> loaderClazz = Class.forName("cpw.mods.fml.common.Loader", true, classLoader);
|
||||
Method m = loaderClazz.getMethod("injectData", Object[].class);
|
||||
m.invoke(null, (Object)FMLInjectionData.data());
|
||||
m = loaderClazz.getMethod("instance");
|
||||
m.invoke(null);
|
||||
FMLRelaunchLog.fine("Minecraft validated, launching...");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// Load in the Loader, make sure he's ready to roll - this will initialize most of the rest of minecraft here
|
||||
System.out.println("A CRITICAL PROBLEM OCCURED INITIALIZING MINECRAFT - LIKELY YOU HAVE AN INCORRECT VERSION FOR THIS FML");
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private static String generateChecksum(ByteBuffer buffer)
|
||||
{
|
||||
return CertificateHelper.getFingerprint(buffer);
|
||||
}
|
||||
}
|
||||
@@ -1,152 +0,0 @@
|
||||
/*
|
||||
* Forge Mod Loader
|
||||
* Copyright (c) 2012-2013 cpw.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
|
||||
package cpw.mods.fml.relauncher;
|
||||
|
||||
import java.awt.Dialog.ModalityType;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.WindowAdapter;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
|
||||
import javax.swing.Box;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JProgressBar;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
|
||||
public class Downloader extends JOptionPane implements IDownloadDisplay
|
||||
{
|
||||
private JDialog container;
|
||||
private JLabel currentActivity;
|
||||
private JProgressBar progress;
|
||||
boolean stopIt;
|
||||
Thread pokeThread;
|
||||
|
||||
private Box makeProgressPanel()
|
||||
{
|
||||
Box box = Box.createVerticalBox();
|
||||
box.add(Box.createRigidArea(new Dimension(0,10)));
|
||||
JLabel welcomeLabel = new JLabel("<html><b><font size='+1'>FML is setting up your minecraft environment</font></b></html>");
|
||||
box.add(welcomeLabel);
|
||||
welcomeLabel.setAlignmentY(LEFT_ALIGNMENT);
|
||||
welcomeLabel = new JLabel("<html>Please wait, FML has some tasks to do before you can play</html>");
|
||||
welcomeLabel.setAlignmentY(LEFT_ALIGNMENT);
|
||||
box.add(welcomeLabel);
|
||||
box.add(Box.createRigidArea(new Dimension(0,10)));
|
||||
currentActivity = new JLabel("Currently doing ...");
|
||||
box.add(currentActivity);
|
||||
box.add(Box.createRigidArea(new Dimension(0,10)));
|
||||
progress = new JProgressBar(0, 100);
|
||||
progress.setStringPainted(true);
|
||||
box.add(progress);
|
||||
box.add(Box.createRigidArea(new Dimension(0,30)));
|
||||
return box;
|
||||
}
|
||||
|
||||
public JDialog makeDialog()
|
||||
{
|
||||
setMessageType(JOptionPane.INFORMATION_MESSAGE);
|
||||
setMessage(makeProgressPanel());
|
||||
setOptions(new Object[] { "Stop" });
|
||||
addPropertyChangeListener(new PropertyChangeListener()
|
||||
{
|
||||
@Override
|
||||
public void propertyChange(PropertyChangeEvent evt)
|
||||
{
|
||||
if (evt.getSource() == Downloader.this && evt.getPropertyName()==VALUE_PROPERTY)
|
||||
{
|
||||
requestClose("This will stop minecraft from launching\nAre you sure you want to do this?");
|
||||
}
|
||||
}
|
||||
});
|
||||
container = new JDialog(null, "Hello", ModalityType.MODELESS);
|
||||
container.setResizable(false);
|
||||
container.setLocationRelativeTo(null);
|
||||
container.add(this);
|
||||
this.updateUI();
|
||||
container.pack();
|
||||
container.setMinimumSize(container.getPreferredSize());
|
||||
container.setVisible(true);
|
||||
container.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
|
||||
container.addWindowListener(new WindowAdapter()
|
||||
{
|
||||
@Override
|
||||
public void windowClosing(WindowEvent e)
|
||||
{
|
||||
requestClose("Closing this window will stop minecraft from launching\nAre you sure you wish to do this?");
|
||||
}
|
||||
});
|
||||
return container;
|
||||
}
|
||||
protected void requestClose(String message)
|
||||
{
|
||||
int shouldClose = JOptionPane.showConfirmDialog(container, message, "Are you sure you want to stop?", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
|
||||
if (shouldClose == JOptionPane.YES_OPTION)
|
||||
{
|
||||
container.dispose();
|
||||
}
|
||||
stopIt = true;
|
||||
if (pokeThread != null)
|
||||
{
|
||||
pokeThread.interrupt();
|
||||
}
|
||||
}
|
||||
|
||||
public void updateProgressString(String progressUpdate, Object... data)
|
||||
{
|
||||
FMLLog.finest(progressUpdate, data);
|
||||
if (currentActivity!=null)
|
||||
{
|
||||
currentActivity.setText(String.format(progressUpdate,data));
|
||||
}
|
||||
}
|
||||
|
||||
public void resetProgress(int sizeGuess)
|
||||
{
|
||||
if (progress!=null)
|
||||
{
|
||||
progress.getModel().setRangeProperties(0, 0, 0, sizeGuess, false);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateProgress(int fullLength)
|
||||
{
|
||||
if (progress!=null)
|
||||
{
|
||||
progress.getModel().setValue(fullLength);
|
||||
}
|
||||
}
|
||||
|
||||
public void makeHeadless()
|
||||
{
|
||||
container = null;
|
||||
progress = null;
|
||||
currentActivity = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPokeThread(Thread currentThread)
|
||||
{
|
||||
this.pokeThread = currentThread;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldStopIt()
|
||||
{
|
||||
return stopIt;
|
||||
}
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
/*
|
||||
* Forge Mod Loader
|
||||
* Copyright (c) 2012-2013 cpw.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
|
||||
package cpw.mods.fml.relauncher;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
public class DummyDownloader implements IDownloadDisplay
|
||||
{
|
||||
|
||||
@Override
|
||||
public void resetProgress(int sizeGuess)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPokeThread(Thread currentThread)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateProgress(int fullLength)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldStopIt()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateProgressString(String string, Object... data)
|
||||
{
|
||||
FMLRelaunchLog.log(Level.FINE, string, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object makeDialog()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void makeHeadless()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,17 +16,17 @@ import java.util.Map;
|
||||
|
||||
public class FMLCorePlugin implements IFMLLoadingPlugin
|
||||
{
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public String[] getLibraryRequestClass()
|
||||
{
|
||||
return new String[] {"cpw.mods.fml.relauncher.CoreFMLLibraries"};
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getASMTransformerClass()
|
||||
{
|
||||
return new String[] {
|
||||
"cpw.mods.fml.common.asm.transformers.PatchingTransformer",
|
||||
"cpw.mods.fml.common.asm.transformers.AccessTransformer",
|
||||
"cpw.mods.fml.common.asm.transformers.MarkerTransformer",
|
||||
"cpw.mods.fml.common.asm.transformers.SideTransformer",
|
||||
|
||||
@@ -12,21 +12,15 @@
|
||||
|
||||
package cpw.mods.fml.relauncher;
|
||||
|
||||
import java.applet.Applet;
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JOptionPane;
|
||||
import net.minecraft.launchwrapper.LaunchClassLoader;
|
||||
|
||||
import com.google.common.base.Throwables;
|
||||
|
||||
import cpw.mods.fml.common.launcher.FMLTweaker;
|
||||
|
||||
import net.minecraft.launchwrapper.LaunchClassLoader;
|
||||
|
||||
public class FMLLaunchHandler
|
||||
{
|
||||
private static FMLLaunchHandler INSTANCE;
|
||||
@@ -66,15 +60,8 @@ public class FMLLaunchHandler
|
||||
this.classLoader.addTransformerExclusion("cpw.mods.fml.common.patcher.");
|
||||
}
|
||||
|
||||
private void showWindow(boolean showIt)
|
||||
{
|
||||
if (CoreModManager.downloadMonitor != null) { return; }
|
||||
CoreModManager.downloadMonitor = new DummyDownloader();
|
||||
}
|
||||
|
||||
private void setupClient()
|
||||
{
|
||||
showWindow(true);
|
||||
FMLRelaunchLog.logFileNamePattern = "ForgeModLoader-client-%g.log";
|
||||
side = Side.CLIENT;
|
||||
setupHome();
|
||||
@@ -82,7 +69,6 @@ public class FMLLaunchHandler
|
||||
|
||||
private void setupServer()
|
||||
{
|
||||
showWindow(false);
|
||||
FMLRelaunchLog.logFileNamePattern = "ForgeModLoader-server-%g.log";
|
||||
side = Side.SERVER;
|
||||
setupHome();
|
||||
@@ -101,7 +87,7 @@ public class FMLLaunchHandler
|
||||
|
||||
try
|
||||
{
|
||||
CoreModManager.handleLaunch(minecraftHome, classLoader);
|
||||
CoreModManager.handleLaunch(minecraftHome, classLoader, tweaker);
|
||||
}
|
||||
catch (Throwable t)
|
||||
{
|
||||
@@ -115,4 +101,15 @@ public class FMLLaunchHandler
|
||||
{
|
||||
return side;
|
||||
}
|
||||
|
||||
|
||||
private void injectPostfixTransformers()
|
||||
{
|
||||
CoreModManager.injectTransformers(classLoader);
|
||||
}
|
||||
|
||||
public static void appendCoreMods()
|
||||
{
|
||||
INSTANCE.injectPostfixTransformers();
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
/*
|
||||
* Forge Mod Loader
|
||||
* Copyright (c) 2012-2013 cpw.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
|
||||
package cpw.mods.fml.relauncher;
|
||||
|
||||
import javax.swing.JDialog;
|
||||
|
||||
public interface IDownloadDisplay
|
||||
{
|
||||
|
||||
void resetProgress(int sizeGuess);
|
||||
|
||||
void setPokeThread(Thread currentThread);
|
||||
|
||||
void updateProgress(int fullLength);
|
||||
|
||||
boolean shouldStopIt();
|
||||
|
||||
void updateProgressString(String string, Object ... data);
|
||||
|
||||
Object makeDialog();
|
||||
|
||||
void makeHeadless();
|
||||
|
||||
}
|
||||
@@ -102,4 +102,24 @@ public interface IFMLLoadingPlugin
|
||||
{
|
||||
public String value() default "";
|
||||
}
|
||||
|
||||
/**
|
||||
* Name this coremod something other than the "short class name"
|
||||
* @author cpw
|
||||
*
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.TYPE)
|
||||
public @interface Name
|
||||
{
|
||||
public String value() default "";
|
||||
}
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.TYPE)
|
||||
public @interface DependsOn
|
||||
{
|
||||
public String[] value() default {};
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
@@ -15,10 +15,12 @@ package cpw.mods.fml.relauncher;
|
||||
/**
|
||||
* Interface for certain core plugins to register libraries to
|
||||
* be loaded in by the FML class loader at launch time
|
||||
* Deprecated without replacement.
|
||||
*
|
||||
* @author cpw
|
||||
*
|
||||
*/
|
||||
@Deprecated
|
||||
public interface ILibrarySet
|
||||
{
|
||||
/**
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
package cpw.mods.fml.relauncher;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import net.minecraft.launchwrapper.Launch;
|
||||
import net.minecraft.launchwrapper.LaunchClassLoader;
|
||||
|
||||
import com.google.common.base.Throwables;
|
||||
|
||||
public class ServerLaunchWrapper {
|
||||
@@ -26,7 +24,35 @@ public class ServerLaunchWrapper {
|
||||
|
||||
private void run(String[] args)
|
||||
{
|
||||
Launch.main(args);
|
||||
Class<?> launchwrapper = null;
|
||||
try
|
||||
{
|
||||
launchwrapper = Class.forName("net.minecraft.launchwrapper.Launch",true,getClass().getClassLoader());
|
||||
Class.forName("org.objectweb.asm.Type",true,getClass().getClassLoader());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
System.err.printf("We appear to be missing one or more essential library files.\n" +
|
||||
"You will need to add them to your server before FML and Forge will run successfully.");
|
||||
e.printStackTrace(System.err);
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Method main = launchwrapper.getMethod("main", String[].class);
|
||||
String[] allArgs = new String[args.length + 2];
|
||||
allArgs[0] = "--tweakClass";
|
||||
allArgs[1] = "cpw.mods.fml.common.launcher.FMLServerTweaker";
|
||||
System.arraycopy(args, 0, allArgs, 2, args.length);
|
||||
main.invoke(null,(Object)allArgs);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
System.err.printf("A problem occurred running the Server launcher.");
|
||||
e.printStackTrace(System.err);
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -13,7 +13,17 @@
|
||||
package cpw.mods.fml.relauncher;
|
||||
|
||||
public enum Side {
|
||||
CLIENT, SERVER;
|
||||
|
||||
/**
|
||||
* The client side. Specifically, an environment where rendering capability exists.
|
||||
* Usually in the game client.
|
||||
*/
|
||||
CLIENT,
|
||||
/**
|
||||
* The server side. Specifically, an environment where NO rendering capability exists.
|
||||
* Usually on the dedicated server.
|
||||
*/
|
||||
SERVER;
|
||||
|
||||
/**
|
||||
* @return If this is the server environment
|
||||
|
||||
@@ -62,12 +62,12 @@ import java.nio.channels.ReadableByteChannel;
|
||||
* Newer versions may eventually support paging in/out of checksums.
|
||||
*/
|
||||
public class Delta {
|
||||
|
||||
|
||||
/**
|
||||
* Debug flag.
|
||||
*/
|
||||
final static boolean debug = false;
|
||||
|
||||
|
||||
/**
|
||||
* Default size of 16.
|
||||
* For "Lorem ipsum" text files (see the tests) the ideal size is about 14.
|
||||
@@ -76,16 +76,16 @@ public class Delta {
|
||||
* Use a size like 64 or 128 for large files.
|
||||
*/
|
||||
public static final int DEFAULT_CHUNK_SIZE = 1<<4;
|
||||
|
||||
|
||||
/**
|
||||
* Chunk Size.
|
||||
*/
|
||||
private int S;
|
||||
|
||||
|
||||
private SourceState source;
|
||||
private TargetState target;
|
||||
private DiffWriter output;
|
||||
|
||||
|
||||
/**
|
||||
* Constructs a new Delta.
|
||||
* In the future, additional constructor arguments will set the algorithm details.
|
||||
@@ -93,12 +93,12 @@ public class Delta {
|
||||
public Delta() {
|
||||
setChunkSize(DEFAULT_CHUNK_SIZE);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the chunk size used.
|
||||
* Larger chunks are faster and use less memory, but create larger patches
|
||||
* as well.
|
||||
*
|
||||
*
|
||||
* @param size
|
||||
*/
|
||||
public void setChunkSize(int size) {
|
||||
@@ -106,17 +106,17 @@ public class Delta {
|
||||
throw new IllegalArgumentException("Invalid size");
|
||||
S = size;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compares the source bytes with target bytes, writing to output.
|
||||
*/
|
||||
public void compute(byte source[], byte target[], OutputStream output)
|
||||
throws IOException {
|
||||
compute(new ByteBufferSeekableSource(source),
|
||||
compute(new ByteBufferSeekableSource(source),
|
||||
new ByteArrayInputStream(target),
|
||||
new GDiffWriter(output));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compares the source bytes with target bytes, returning output.
|
||||
*/
|
||||
@@ -126,20 +126,20 @@ public class Delta {
|
||||
compute(source, target, os);
|
||||
return os.toByteArray();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compares the source bytes with target input, writing to output.
|
||||
*/
|
||||
public void compute(byte[] sourceBytes, InputStream inputStream,
|
||||
DiffWriter diffWriter) throws IOException
|
||||
{
|
||||
compute(new ByteBufferSeekableSource(sourceBytes),
|
||||
compute(new ByteBufferSeekableSource(sourceBytes),
|
||||
inputStream, diffWriter);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compares the source file with a target file, writing to output.
|
||||
*
|
||||
*
|
||||
* @param output will be closed
|
||||
*/
|
||||
public void compute(File sourceFile, File targetFile, DiffWriter output)
|
||||
@@ -153,25 +153,25 @@ public class Delta {
|
||||
is.close();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compares the source with a target, writing to output.
|
||||
*
|
||||
*
|
||||
* @param output will be closed
|
||||
*/
|
||||
public void compute(SeekableSource seekSource, InputStream targetIS, DiffWriter output)
|
||||
throws IOException {
|
||||
|
||||
|
||||
if (debug) {
|
||||
debug("using match length S = " + S);
|
||||
}
|
||||
|
||||
|
||||
source = new SourceState(seekSource);
|
||||
target = new TargetState(targetIS);
|
||||
this.output = output;
|
||||
if (debug)
|
||||
debug("checksums " + source.checksum);
|
||||
|
||||
|
||||
while (!target.eof()) {
|
||||
debug("!target.eof()");
|
||||
int index = target.find(source);
|
||||
@@ -196,7 +196,7 @@ public class Delta {
|
||||
}
|
||||
output.close();
|
||||
}
|
||||
|
||||
|
||||
private void addData() throws IOException {
|
||||
int i = target.read();
|
||||
if (debug)
|
||||
@@ -205,12 +205,12 @@ public class Delta {
|
||||
return;
|
||||
output.addData((byte)i);
|
||||
}
|
||||
|
||||
|
||||
class SourceState {
|
||||
|
||||
private Checksum checksum;
|
||||
private SeekableSource source;
|
||||
|
||||
|
||||
public SourceState(SeekableSource source) throws IOException {
|
||||
checksum = new Checksum(source, S);
|
||||
this.source = source;
|
||||
@@ -232,23 +232,23 @@ public class Delta {
|
||||
" source=" + this.source +
|
||||
"";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
class TargetState {
|
||||
|
||||
|
||||
private ReadableByteChannel c;
|
||||
private ByteBuffer tbuf = ByteBuffer.allocate(blocksize());
|
||||
private ByteBuffer sbuf = ByteBuffer.allocate(blocksize());
|
||||
private long hash;
|
||||
private boolean hashReset = true;
|
||||
private boolean eof;
|
||||
|
||||
|
||||
TargetState(InputStream targetIS) throws IOException {
|
||||
c = Channels.newChannel(targetIS);
|
||||
tbuf.limit(0);
|
||||
}
|
||||
|
||||
|
||||
private int blocksize() {
|
||||
return Math.min(1024 * 16, S * 4);
|
||||
}
|
||||
@@ -362,13 +362,13 @@ public class Delta {
|
||||
" eof=" + this.eof +
|
||||
"]";
|
||||
}
|
||||
|
||||
|
||||
private String dump() { return dump(tbuf); }
|
||||
|
||||
|
||||
private String dump(ByteBuffer bb) {
|
||||
return getTextDump(bb);
|
||||
}
|
||||
|
||||
|
||||
private void append(StringBuffer sb, int value) {
|
||||
char b1 = (char)((value >> 4) & 0x0F);
|
||||
char b2 = (char)((value) & 0x0F);
|
||||
@@ -392,7 +392,7 @@ public class Delta {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a patch using file names.
|
||||
*/
|
||||
@@ -426,6 +426,7 @@ public class Delta {
|
||||
"source or target is too large, max length is "
|
||||
+ Integer.MAX_VALUE);
|
||||
System.err.println("aborting..");
|
||||
output.close();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -437,7 +438,7 @@ public class Delta {
|
||||
if (debug) //gls031504a
|
||||
System.out.println("finished generating delta");
|
||||
}
|
||||
|
||||
|
||||
private void debug(String s) {
|
||||
if (debug)
|
||||
System.err.println(s);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 2001 Torgeir Veimo
|
||||
*
|
||||
@@ -31,26 +31,26 @@ import java.io.IOException;
|
||||
* Interface for DIFF writers.
|
||||
*/
|
||||
public interface DiffWriter extends Closeable {
|
||||
|
||||
|
||||
/**
|
||||
* Add a GDIFF copy instruction.
|
||||
*/
|
||||
public void addCopy(long offset, int length) throws IOException;
|
||||
|
||||
|
||||
/**
|
||||
* Add a GDIFF data instruction.
|
||||
* Implementors should buffer the data.
|
||||
*/
|
||||
public void addData(byte b) throws IOException;
|
||||
|
||||
|
||||
/**
|
||||
* Flushes to output, e.g. any data added.
|
||||
*/
|
||||
public void flush() throws IOException;
|
||||
|
||||
|
||||
/**
|
||||
* Closes this stream.
|
||||
* Note that {@link Diff} will invoke this method at the end.
|
||||
* Note that {@link DiffWriter} will invoke this method at the end.
|
||||
*/
|
||||
public void close() throws IOException;
|
||||
}
|
||||
|
||||
@@ -52,13 +52,14 @@ import java.io.RandomAccessFile;
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
/**
|
||||
* This class patches an input file with a GDIFF patch fil�e.
|
||||
* This class patches an input file with a GDIFF patch file.
|
||||
*
|
||||
* The patch file follows the GDIFF file specification available at
|
||||
* {@link http://www.w3.org/TR/NOTE-gdiff-19970901.html}.
|
||||
*
|
||||
* <a href="http://www.w3.org/TR/NOTE-gdiff-19970901.html">http://www.w3.org/TR/NOTE-gdiff-19970901.html</a>.
|
||||
*/
|
||||
public class GDiffPatcher {
|
||||
|
||||
|
||||
private ByteBuffer buf = ByteBuffer.allocate(1024);
|
||||
private byte buf2[] = buf.array();
|
||||
|
||||
@@ -67,14 +68,14 @@ public class GDiffPatcher {
|
||||
*/
|
||||
public GDiffPatcher() {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Patches to an output file.
|
||||
*/
|
||||
public void patch(File sourceFile, File patchFile, File outputFile)
|
||||
throws IOException
|
||||
{
|
||||
RandomAccessFileSeekableSource source =new RandomAccessFileSeekableSource(new RandomAccessFile(sourceFile, "r"));
|
||||
RandomAccessFileSeekableSource source =new RandomAccessFileSeekableSource(new RandomAccessFile(sourceFile, "r"));
|
||||
InputStream patch = new FileInputStream(patchFile);
|
||||
OutputStream output = new FileOutputStream(outputFile);
|
||||
try {
|
||||
@@ -87,14 +88,14 @@ public class GDiffPatcher {
|
||||
output.close();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Patches to an output stream.
|
||||
*/
|
||||
public void patch(byte[] source, InputStream patch, OutputStream output) throws IOException {
|
||||
patch(new ByteBufferSeekableSource(source), patch, output);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Patches in memory, returning the patch result.
|
||||
*/
|
||||
@@ -103,12 +104,12 @@ public class GDiffPatcher {
|
||||
patch(source, new ByteArrayInputStream(patch), os);
|
||||
return os.toByteArray();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Patches to an output stream.
|
||||
*/
|
||||
public void patch(SeekableSource source, InputStream patch, OutputStream out) throws IOException {
|
||||
|
||||
|
||||
DataOutputStream outOS = new DataOutputStream(out);
|
||||
DataInputStream patchIS = new DataInputStream(patch);
|
||||
|
||||
@@ -128,12 +129,12 @@ public class GDiffPatcher {
|
||||
break;
|
||||
int length;
|
||||
int offset;
|
||||
|
||||
|
||||
if (command <= DATA_MAX) {
|
||||
append(command, patchIS, outOS);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
switch (command) {
|
||||
case DATA_USHORT: // ushort, n bytes following; append
|
||||
length = patchIS.readUnsignedShort();
|
||||
@@ -178,7 +179,7 @@ public class GDiffPatcher {
|
||||
length = patchIS.readInt();
|
||||
copy(loffset, length, source, outOS);
|
||||
break;
|
||||
default:
|
||||
default:
|
||||
throw new IllegalStateException("command " + command);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,18 @@
|
||||
*/
|
||||
package cpw.mods.fml.server;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipFile;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.MapDifference;
|
||||
@@ -23,10 +34,13 @@ import net.minecraft.network.packet.NetHandler;
|
||||
import net.minecraft.network.packet.Packet;
|
||||
import net.minecraft.network.packet.Packet131MapData;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.util.StringTranslate;
|
||||
import net.minecraft.world.World;
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.IFMLSidedHandler;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.ModContainer;
|
||||
import cpw.mods.fml.common.ObfuscationReflectionHelper;
|
||||
import cpw.mods.fml.common.network.EntitySpawnAdjustmentPacket;
|
||||
import cpw.mods.fml.common.network.EntitySpawnPacket;
|
||||
@@ -189,4 +203,66 @@ public class FMLServerHandler implements IFMLSidedHandler
|
||||
{
|
||||
|
||||
}
|
||||
@Override
|
||||
public void addModAsResource(ModContainer container)
|
||||
{
|
||||
File source = container.getSource();
|
||||
try
|
||||
{
|
||||
if (source.isDirectory())
|
||||
{
|
||||
searchDirForENUSLanguage(source,"");
|
||||
}
|
||||
else
|
||||
{
|
||||
searchZipForENUSLanguage(source);
|
||||
}
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
private static final Pattern assetENUSLang = Pattern.compile("assets/(.*)/lang/en_US.lang");
|
||||
private void searchZipForENUSLanguage(File source) throws IOException
|
||||
{
|
||||
ZipFile zf = new ZipFile(source);
|
||||
for (ZipEntry ze : Collections.list(zf.entries()))
|
||||
{
|
||||
Matcher matcher = assetENUSLang.matcher(ze.getName());
|
||||
if (matcher.matches())
|
||||
{
|
||||
FMLLog.fine("Injecting found translation data in zip file %s at %s into language system", source.getName(), ze.getName());
|
||||
StringTranslate.inject(zf.getInputStream(ze));
|
||||
}
|
||||
}
|
||||
zf.close();
|
||||
}
|
||||
private void searchDirForENUSLanguage(File source, String path) throws IOException
|
||||
{
|
||||
for (File file : source.listFiles())
|
||||
{
|
||||
String currPath = path+file.getName();
|
||||
if (file.isDirectory())
|
||||
{
|
||||
searchDirForENUSLanguage(file, currPath+'/');
|
||||
}
|
||||
Matcher matcher = assetENUSLang.matcher(currPath);
|
||||
if (matcher.matches())
|
||||
{
|
||||
FMLLog.fine("Injecting found translation data at %s into language system", currPath);
|
||||
StringTranslate.inject(new FileInputStream(file));
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void updateResourcePackList()
|
||||
{
|
||||
|
||||
}
|
||||
@Override
|
||||
public String getCurrentLanguage()
|
||||
{
|
||||
return "en_US";
|
||||
}
|
||||
}
|
||||
+39
-37
@@ -1,76 +1,78 @@
|
||||
#Main FML Access Transformer configuration file
|
||||
# TileEntity addMapping
|
||||
public asi.a(Ljava/lang/Class;Ljava/lang/String;)V #MD:TileEntity/func_70306_a
|
||||
public asp.a(Ljava/lang/Class;Ljava/lang/String;)V #MD:TileEntity/func_70306_a
|
||||
# EntityList addMappings
|
||||
public nq.a(Ljava/lang/Class;Ljava/lang/String;I)V #MD:EntityList/func_75618_a
|
||||
public nq.a(Ljava/lang/Class;Ljava/lang/String;III)V #MD:EntityList/func_75614_a
|
||||
public nq.b #FD:EntityList/field_75625_b #nameToClassMap
|
||||
public nq.c #FD:EntityList/field_75626_c #classToNameMap
|
||||
public nq.d #FD:EntityList/field_75623_d #idToClassMap
|
||||
public nt.a(Ljava/lang/Class;Ljava/lang/String;I)V #MD:EntityList/func_75618_a
|
||||
public nt.a(Ljava/lang/Class;Ljava/lang/String;III)V #MD:EntityList/func_75614_a
|
||||
public nt.b #FD:EntityList/field_75625_b #nameToClassMap
|
||||
public nt.c #FD:EntityList/field_75626_c #classToNameMap
|
||||
public nt.d #FD:EntityList/field_75623_d #idToClassMap
|
||||
# RenderEngine
|
||||
#public bba.h #FD:RenderEngine/field_78367_h #textureList # -- MISSING MAPPING # -- MISSING MAPPING
|
||||
#public bge.g #FD:RenderEngine/field_78366_k #texturePack # -- MISSING MAPPING
|
||||
# RenderManager
|
||||
public bga.q #FD:RenderManager/field_78729_o #renderers
|
||||
public bgl.q #FD:RenderManager/field_78729_o #renderers
|
||||
# RenderBlocks - everything
|
||||
public bfg.* #FD:RenderBlocks/*
|
||||
public bfg.*() #MD:RenderBlocks/*
|
||||
public bfr.* #FD:RenderBlocks/*
|
||||
public bfr.*() #MD:RenderBlocks/*
|
||||
#RenderPlayer
|
||||
#public-f bht.h #FD:RenderPlayer/field_77110_j #armorlist # -- MISSING MAPPING
|
||||
#RenderBiped
|
||||
public-f bgj.l #FD:RenderBiped/field_82424_k #armorlist
|
||||
public-f bgu.l #FD:RenderBiped/field_82424_k #armorlist
|
||||
#StringTranslate
|
||||
#public bp.b #FD:StringTranslate/field_74815_b # -- MISSING MAPPING
|
||||
#public bp.e #FD:StringTranslate/field_74813_d # -- MISSING MAPPING
|
||||
# TileEntityRenderer
|
||||
public bis.m #FD:TileEntityRenderer/field_76966_m
|
||||
public bje.m #FD:TileEntityRenderer/field_76966_m
|
||||
# CraftingManager - make the add recipe methods public
|
||||
public aaa.a(Lxz;[Ljava/lang/Object;)Laad; #MD:CraftingManager/func_92103_a
|
||||
public aaa.b(Lxz;[Ljava/lang/Object;)V #MD:CraftingManager/func_77596_b
|
||||
public aaf.a(Lye;[Ljava/lang/Object;)Laai; #MD:CraftingManager/func_92103_a
|
||||
public aaf.b(Lye;[Ljava/lang/Object;)V #MD:CraftingManager/func_77596_b
|
||||
# WeightedRandomItem
|
||||
public mg.a #FD:WeightedRandomItem/field_76292_a #probability
|
||||
public mj.a #FD:WeightedRandomItem/field_76292_a #probability
|
||||
# ItemStack
|
||||
#public+f tv.c #FD:ItemStack/field_77993_c #itemId
|
||||
# StatBase
|
||||
public kr.a #FD:StatBase/field_75978_a #statName
|
||||
public ku.a #FD:StatBase/field_75978_a #statName
|
||||
# NetLoginHandler
|
||||
public jv.a(Ljv;Z)Z #MD:NetLoginHandler/func_72531_a #'complete connection'
|
||||
public jv.g #FD:NetLoginHandler/field_72543_h #userName
|
||||
public jy.a(Ljy;Z)Z #MD:NetLoginHandler/func_72531_a #'complete connection'
|
||||
public jy.g #FD:NetLoginHandler/field_72543_h #userName
|
||||
# EntityPlayerMP getNextWindowId
|
||||
public js.bJ()V #MD:EntityPlayerMP/func_71117_bO
|
||||
public js.bX #FD:EntityPlayerMP/field_71139_cq
|
||||
public jv.bN()V #MD:EntityPlayerMP/func_71117_bO
|
||||
public jv.bY #FD:EntityPlayerMP/field_71139_cq
|
||||
# EntityAITaskEntry
|
||||
public pr #CL:EntityAITaskEntry
|
||||
public pu #CL:EntityAITaskEntry
|
||||
# EntityAITasks
|
||||
public pq.a #FD:EntityAITasks/field_75782_a #taskList
|
||||
public pt.a #FD:EntityAITasks/field_75782_a #taskList
|
||||
# BlockChest
|
||||
public and.m(Labr;III)Z #MD:BlockChest/func_72292_n #isOcelotBlockingChest
|
||||
public ank.m(Labw;III)Z #MD:BlockChest/func_72292_n #isOcelotBlockingChest
|
||||
# EntityLiving
|
||||
#public ng.aU #FD:EntityLiving/field_70736_aM #carryoverDamage # -- MISSING MAPPING
|
||||
public od.c #FD:EntityLiving/field_70714_bg #tasks
|
||||
public og.c #FD:EntityLiving/field_70714_bg #tasks
|
||||
#public ng.bG #FD:EntityLiving/field_70703_bu #isJumping # -- MISSING MAPPING
|
||||
# EntityAIOcelotSit
|
||||
protected qd.a(Labr;III)Z #MD:EntityAIOcelotSit/func_75398_a #nearestSittableBlock
|
||||
protected qd.f()Z #MD:EntityAIOcelotSit/func_75399_f #isblocksittable
|
||||
protected qg.a(Labw;III)Z #MD:EntityAIOcelotSit/func_75398_a #nearestSittableBlock
|
||||
protected qg.f()Z #MD:EntityAIOcelotSit/func_75399_f #isblocksittable
|
||||
# CallableMinecraftVersion - sanity check the MC version
|
||||
public c #CL:CallableMinecraftVersion
|
||||
public c.<init>(Lb;)V #MD:CallableMinecraftVersion/<init>(Lnet/minecraft/src/CrashReport;) #constructor
|
||||
# EntityAnimal
|
||||
public rm.bp #FD:EntityAnimal/field_70881_d #inLove
|
||||
public rp.bp #FD:EntityAnimal/field_70881_d #inLove
|
||||
# WorldType
|
||||
public acb.<init>(ILjava/lang/String;)V #MD:WorldType/<init>(ILjava/lang/String;)
|
||||
public acb.<init>(ILjava/lang/String;I)V #MD:WorldType/<init>(ILjava/lang/String;I)
|
||||
public acg.<init>(ILjava/lang/String;)V #MD:WorldType/<init>(ILjava/lang/String;)
|
||||
public acg.<init>(ILjava/lang/String;I)V #MD:WorldType/<init>(ILjava/lang/String;I)
|
||||
# ComponentVillage
|
||||
public ajf #CL:ComponentVillage
|
||||
public ajm #CL:ComponentVillage
|
||||
# StructureStart
|
||||
public aiv.a #FD:StructureStart/field_75075_a
|
||||
# EntityVillager - minmax lists
|
||||
public tw.a(Labh;ILjava/util/Random;F)V #MD:EntityVillager/func_70948_a #addBuy
|
||||
public tw.b(Labh;ILjava/util/Random;F)V #MD:EntityVillager/func_70949_b #addSell
|
||||
public tw.bB #FD:EntityVillager/field_70958_bB
|
||||
public tw.bC #FD:EntityVillager/field_70960_bC
|
||||
public ub.a(Labm;ILjava/util/Random;F)V #MD:EntityVillager/func_70948_a #addBuy
|
||||
public ub.b(Labm;ILjava/util/Random;F)V #MD:EntityVillager/func_70949_b #addSell
|
||||
public ub.bB #FD:EntityVillager/field_70958_bB
|
||||
public ub.bC #FD:EntityVillager/field_70960_bC
|
||||
# GuiButtonMerchant
|
||||
public axo #CL:GuiButtonMerchant
|
||||
public axx #CL:GuiButtonMerchant
|
||||
|
||||
protected auo.a #FD:GuiYesNo/field_73942_a #guiScreen
|
||||
protected aux.a #FD:GuiYesNo/field_73942_a #guiScreen
|
||||
# Minecraft
|
||||
public atn.C #FD:Minecraft/field_71425_J #running
|
||||
public atn.M #FD:Minecraft/field_71446_o # textureManager
|
||||
public atv.D #FD:Minecraft/field_71425_J #running
|
||||
public atv.N #FD:Minecraft/field_71446_o # textureManager
|
||||
@@ -2,11 +2,11 @@
|
||||
# Only runs at runtime because it's not necessary at compile time
|
||||
# has deobf and obf mappings so it runs OK in mcp
|
||||
# entityplayer -> network/player
|
||||
ua cpw/mods/fml/common/network/Player
|
||||
uf cpw/mods/fml/common/network/Player
|
||||
net.minecraft.entity.player.EntityPlayer cpw/mods/fml/common/network/Player
|
||||
# block -> blockproxy
|
||||
aqs cpw/mods/fml/common/registry/BlockProxy
|
||||
aqz cpw/mods/fml/common/registry/BlockProxy
|
||||
net.minecraft.block.Block cpw/mods/fml/common/registry/BlockProxy
|
||||
# item -> itemproxy
|
||||
xx cpw/mods/fml/common/registry/ItemProxy
|
||||
yc cpw/mods/fml/common/registry/ItemProxy
|
||||
net.minecraft.item.Item cpw/mods/fml/common/registry/ItemProxy
|
||||
+3
-3
@@ -3,9 +3,9 @@
|
||||
"modid": "mcp",
|
||||
"name": "Minecraft Coder Pack",
|
||||
"description": "Modding toolkit to decompile and deobfuscate the Minecraft client and server files.",
|
||||
"version": "7.51",
|
||||
"mcversion": "1.5.2",
|
||||
"logoFile": "/mcp.png",
|
||||
"version": "8.09",
|
||||
"mcversion": "1.6.3",
|
||||
"logoFile": "/mcplogo.png",
|
||||
"url": "http://mcp.ocean-labs.de/",
|
||||
"updateUrl": "",
|
||||
"authors": ["Searge", "ProfMobius", "IngisKahn", "Fesh0r", "ZeuX", "R4wk", "Others"],
|
||||
|
||||
+511
-744
File diff suppressed because it is too large.
Load diff
+613
-312
File diff suppressed because it is too large.
Load diff
+18331
-18177
File diff suppressed because it is too large.
Load diff
+8
-8
@@ -38,8 +38,8 @@ DirNatives = %(DirJars)s/bin/natives
|
||||
Client = %(DirJars)s/bin/minecraft.jar
|
||||
Server = %(DirJars)s/minecraft_server.jar
|
||||
LWJGL = %(DirJars)s/bin/jinput.jar,%(DirJars)s/bin/lwjgl.jar,%(DirJars)s/bin/lwjgl_util.jar
|
||||
MD5Client = 3c56fb4b77b1ca37dde69b5eb896fc4d
|
||||
MD5Server = ff8f81970a5955737c356b534d3aee96
|
||||
MD5Client = 233effe2110d40a0519cf1489e4ccb1c
|
||||
MD5Server = 8ed981ab6030412f586bfe38ff0aaa82
|
||||
|
||||
[RETROGUARD]
|
||||
Location = %(DirRuntime)s/bin/retroguard.jar
|
||||
@@ -96,8 +96,8 @@ BinClient = %(DirBin)s/minecraft
|
||||
BinServer = %(DirBin)s/minecraft_server
|
||||
LogClient = %(DirLogs)s/client_compile.log
|
||||
LogServer = %(DirLogs)s/server_compile.log
|
||||
ClassPathClient = %(DirLib)s/,%(DirLib)s/*,%(DirJars)s/bin/minecraft.jar,%(DirJars)s/bin/jinput.jar,%(DirJars)s/bin/lwjgl.jar,%(DirJars)s/bin/lwjgl_util.jar
|
||||
ClassPathServer = %(DirLib)s/,%(DirLib)s/*,%(DirJars)s/minecraft_server.jar
|
||||
ClassPathClient =
|
||||
ClassPathServer =
|
||||
ClientFixes = %(DirConf)s/patches
|
||||
FixStart = Start
|
||||
IgnorePkg = paulscode,com,isom,ibxm,de/matthiasmann/twl,org,javax/xml,javax/ws,argo
|
||||
@@ -127,8 +127,8 @@ LogFile = %(DirLogs)s/mcp.log
|
||||
LogFileErr = %(DirLogs)s/mcperr.log
|
||||
UpdateUrl =
|
||||
IgnoreUpdate = %(DirBin)s,%(DirLib)s,%(DirLogs)s,%(DirModSrc)s,%(DirReobf)s,%(DirSrc)s,%(DirTemp)s,%(DirEclipse)s/Client/bin,%(DirEclipse)s/Server/bin,%(DirJars)s/world,%(DirJars)s/saves,%(DirJars)s/resources
|
||||
RGIndex = 140000
|
||||
ParamIndex = 40000
|
||||
RGIndex = 143000
|
||||
ParamIndex = 43000
|
||||
|
||||
[ASTYLE]
|
||||
AstyleConfig = %(DirConf)s/astyle.cfg
|
||||
@@ -159,5 +159,5 @@ CmdFernflower = %s -Xmx512M -jar %s -din=0 -rbr=0 -dgs=1 -asc=1 -log=WARN {indir
|
||||
CmdExceptor = %s -jar %s {input} {output} {conf} {log}
|
||||
CmdRecomp = %s -encoding UTF-8 -Xlint:-options -deprecation -g -source 1.6 -target 1.6 -classpath "{classpath}" -sourcepath {sourcepath} -d {outpath} {pkgs}
|
||||
CmdRecompScala = %s -encoding UTF-8 -deprecation -target:jvm-1.6 -classpath "{classpath}" -sourcepath {sourcepath} -d {outpath} {pkgs}
|
||||
CmdStartSrv = %s -Xincgc -Xms1024M -Xmx1024M -cp "{classpath}" net.minecraft.server.MinecraftServer
|
||||
CmdStartClt = %s -Xincgc -Xms1024M -Xmx1024M -cp "{classpath}" -Djava.library.path={natives} Start
|
||||
CmdStartSrv = %s -Xincgc -Xms1024M -Xmx1024M -cp "{classpath}" cpw.mods.fml.relauncher.ServerLaunchWrapper {extraargs}
|
||||
CmdStartClt = %s -Xincgc -Xms1024M -Xmx1024M -cp "{classpath}" -Djava.library.path={natives} net.minecraft.launchwrapper.Launch --tweakClass cpw.mods.fml.common.launcher.FMLTweaker --version FML_DEV {extraargs}
|
||||
+527
-427
File diff suppressed because it is too large.
Load diff
+15
-5
@@ -151,6 +151,7 @@ CallableTexturePack,net/minecraft/client
|
||||
CallableType2,net/minecraft/client
|
||||
CallableUpdatingScreenName,net/minecraft/client
|
||||
Minecraft,net/minecraft/client
|
||||
MinecraftINNER13,net/minecraft/client
|
||||
StatStringFormatKeyInv,net/minecraft/client
|
||||
ThreadClientSleep,net/minecraft/client
|
||||
ScheduledSound,net/minecraft/client/audio
|
||||
@@ -164,7 +165,6 @@ AbstractClientPlayer,net/minecraft/client/entity
|
||||
EntityClientPlayerMP,net/minecraft/client/entity
|
||||
EntityOtherPlayerMP,net/minecraft/client/entity
|
||||
EntityPlayerSP,net/minecraft/client/entity
|
||||
RenderMinecartMobSpawner,net/minecraft/client/entity/render
|
||||
ChatClickData,net/minecraft/client/gui
|
||||
ChatLine,net/minecraft/client/gui
|
||||
FontRenderer,net/minecraft/client/gui
|
||||
@@ -376,6 +376,8 @@ ThreadConnectToServer,net/minecraft/client/multiplayer
|
||||
ThreadLanServerFind,net/minecraft/client/multiplayer
|
||||
ThreadLanServerPing,net/minecraft/client/multiplayer
|
||||
WorldClient,net/minecraft/client/multiplayer
|
||||
WorldClientINNER3,net/minecraft/client/multiplayer
|
||||
WorldClientINNER4,net/minecraft/client/multiplayer
|
||||
EffectRenderer,net/minecraft/client/particle
|
||||
EntityAuraFX,net/minecraft/client/particle
|
||||
EntityBreakingFX,net/minecraft/client/particle
|
||||
@@ -466,6 +468,7 @@ RenderLiving,net/minecraft/client/renderer/entity
|
||||
RenderMagmaCube,net/minecraft/client/renderer/entity
|
||||
RenderManager,net/minecraft/client/renderer/entity
|
||||
RenderMinecart,net/minecraft/client/renderer/entity
|
||||
RenderMinecartMobSpawner,net/minecraft/client/renderer/entity
|
||||
RenderMooshroom,net/minecraft/client/renderer/entity
|
||||
RenderOcelot,net/minecraft/client/renderer/entity
|
||||
RenderPainting,net/minecraft/client/renderer/entity
|
||||
@@ -534,7 +537,6 @@ LanguageManager,net/minecraft/client/resources
|
||||
Locale,net/minecraft/client/resources
|
||||
ReloadableResourceManager,net/minecraft/client/resources
|
||||
Resource,net/minecraft/client/resources
|
||||
ResourceLocation,net/minecraft/client/resources
|
||||
ResourceManager,net/minecraft/client/resources
|
||||
ResourceManagerReloadListener,net/minecraft/client/resources
|
||||
ResourcePack,net/minecraft/client/resources
|
||||
@@ -602,6 +604,7 @@ CommandServerSay,net/minecraft/command
|
||||
CommandServerStop,net/minecraft/command
|
||||
CommandServerTp,net/minecraft/command
|
||||
CommandServerWhitelist,net/minecraft/command
|
||||
CommandSetPlayerTimeout,net/minecraft/command
|
||||
CommandSetSpawnpoint,net/minecraft/command
|
||||
CommandShowSeed,net/minecraft/command
|
||||
CommandSpreadPlayers,net/minecraft/command
|
||||
@@ -761,8 +764,8 @@ EntityAILookIdle,net/minecraft/entity/ai
|
||||
EntityAIMate,net/minecraft/entity/ai
|
||||
EntityAIMoveIndoors,net/minecraft/entity/ai
|
||||
EntityAIMoveThroughVillage,net/minecraft/entity/ai
|
||||
EntityAIMoveTowardsRestriction,net/minecraft/entity/ai
|
||||
EntityAIMoveTowardsTarget,net/minecraft/entity/ai
|
||||
EntityAIMoveTwardsRestriction,net/minecraft/entity/ai
|
||||
EntityAINearestAttackableTarget,net/minecraft/entity/ai
|
||||
EntityAINearestAttackableTargetSelector,net/minecraft/entity/ai
|
||||
EntityAINearestAttackableTargetSorter,net/minecraft/entity/ai
|
||||
@@ -800,10 +803,8 @@ AttributeInstance,net/minecraft/entity/ai/attributes
|
||||
AttributeModifier,net/minecraft/entity/ai/attributes
|
||||
BaseAttribute,net/minecraft/entity/ai/attributes
|
||||
BaseAttributeMap,net/minecraft/entity/ai/attributes
|
||||
ClientsideAttributeMap,net/minecraft/entity/ai/attributes
|
||||
ModifiableAttributeInstance,net/minecraft/entity/ai/attributes
|
||||
RangedAttribute,net/minecraft/entity/ai/attributes
|
||||
ReadonlyAttributeInstance,net/minecraft/entity/ai/attributes
|
||||
ServersideAttributeMap,net/minecraft/entity/ai/attributes
|
||||
BossStatus,net/minecraft/entity/boss
|
||||
EntityDragon,net/minecraft/entity/boss
|
||||
@@ -851,6 +852,8 @@ EntitySnowman,net/minecraft/entity/monster
|
||||
EntitySpider,net/minecraft/entity/monster
|
||||
EntityWitch,net/minecraft/entity/monster
|
||||
EntityZombie,net/minecraft/entity/monster
|
||||
EntityZombieGroupData,net/minecraft/entity/monster
|
||||
EntityZombieINNER1,net/minecraft/entity/monster
|
||||
FilterIMob,net/minecraft/entity/monster
|
||||
IMob,net/minecraft/entity/monster
|
||||
ContainerSheep,net/minecraft/entity/passive
|
||||
@@ -1068,6 +1071,7 @@ Packet12PlayerLook,net/minecraft/network/packet
|
||||
Packet130UpdateSign,net/minecraft/network/packet
|
||||
Packet131MapData,net/minecraft/network/packet
|
||||
Packet132TileEntityData,net/minecraft/network/packet
|
||||
Packet133TileEditorOpen,net/minecraft/network/packet
|
||||
Packet13PlayerLookMove,net/minecraft/network/packet
|
||||
Packet14BlockDig,net/minecraft/network/packet
|
||||
Packet15Place,net/minecraft/network/packet
|
||||
@@ -1115,6 +1119,7 @@ Packet41EntityEffect,net/minecraft/network/packet
|
||||
Packet42RemoveEntityEffect,net/minecraft/network/packet
|
||||
Packet43Experience,net/minecraft/network/packet
|
||||
Packet44UpdateAttributes,net/minecraft/network/packet
|
||||
Packet44UpdateAttributesSnapshot,net/minecraft/network/packet
|
||||
Packet4UpdateTime,net/minecraft/network/packet
|
||||
Packet51MapChunk,net/minecraft/network/packet
|
||||
Packet51MapChunkData,net/minecraft/network/packet
|
||||
@@ -1173,6 +1178,7 @@ ScoreboardSaveData,net/minecraft/scoreboard
|
||||
ServerCommandScoreboard,net/minecraft/scoreboard
|
||||
ServerCommandTestFor,net/minecraft/scoreboard
|
||||
ServerScoreboard,net/minecraft/scoreboard
|
||||
Team,net/minecraft/scoreboard
|
||||
CallableIsServerModded,net/minecraft/server
|
||||
CallableServerMemoryStats,net/minecraft/server
|
||||
CallableServerProfiler,net/minecraft/server
|
||||
@@ -1292,6 +1298,7 @@ MovementInput,net/minecraft/util
|
||||
MovementInputFromOptions,net/minecraft/util
|
||||
MovingObjectPosition,net/minecraft/util
|
||||
ReportedException,net/minecraft/util
|
||||
ResourceLocation,net/minecraft/util
|
||||
ScreenShotHelper,net/minecraft/util
|
||||
Session,net/minecraft/util
|
||||
StatCollector,net/minecraft/util
|
||||
@@ -1476,6 +1483,7 @@ ComponentNetherBridgeThrone,net/minecraft/world/gen/structure
|
||||
ComponentScatteredFeature,net/minecraft/world/gen/structure
|
||||
ComponentScatteredFeatureDesertPyramid,net/minecraft/world/gen/structure
|
||||
ComponentScatteredFeatureJunglePyramid,net/minecraft/world/gen/structure
|
||||
ComponentScatteredFeaturePieces,net/minecraft/world/gen/structure
|
||||
ComponentScatteredFeaturePieces2,net/minecraft/world/gen/structure
|
||||
ComponentScatteredFeatureSwampHut,net/minecraft/world/gen/structure
|
||||
ComponentStronghold,net/minecraft/world/gen/structure
|
||||
@@ -1513,6 +1521,8 @@ MapGenMineshaft,net/minecraft/world/gen/structure
|
||||
MapGenNetherBridge,net/minecraft/world/gen/structure
|
||||
MapGenStronghold,net/minecraft/world/gen/structure
|
||||
MapGenStructure,net/minecraft/world/gen/structure
|
||||
MapGenStructureData,net/minecraft/world/gen/structure
|
||||
MapGenStructureIO,net/minecraft/world/gen/structure
|
||||
MapGenVillage,net/minecraft/world/gen/structure
|
||||
StructureBoundingBox,net/minecraft/world/gen/structure
|
||||
StructureComponent,net/minecraft/world/gen/structure
|
||||
|
||||
|
+165
-106
@@ -3,6 +3,7 @@ p_100006_1_,par1Str,2
|
||||
p_100006_2_,par2Str,2
|
||||
p_100009_0_,par0,2
|
||||
p_100012_1_,par1,2
|
||||
p_100014_0_,par0McoServerList,2
|
||||
p_100015_0_,par0KeyBinding,2
|
||||
p_101001_1_,par1,2
|
||||
p_101001_2_,par2,2
|
||||
@@ -88,7 +89,6 @@ p_104088_3_,par3Tessellator,2
|
||||
p_104089_1_,par1,2
|
||||
p_104089_2_,par2,2
|
||||
p_110121_0_,par0Str,2
|
||||
p_110122_1_,par1ChatMessageComponent,2
|
||||
p_110125_1_,par1Icon,2
|
||||
p_110128_1_,par1Entity,2
|
||||
p_110129_0_,par0World,2
|
||||
@@ -103,13 +103,13 @@ p_110131_1_,par1ItemStack,2
|
||||
p_110132_1_,par1IInvBasic,2
|
||||
p_110133_1_,par1Str,2
|
||||
p_110134_1_,par1IInvBasic,2
|
||||
p_110135_1_,par1ItemStack,2
|
||||
p_110145_1_,par1Entity,2
|
||||
p_110146_1_,par1,2
|
||||
p_110146_2_,par2,2
|
||||
p_110148_1_,par1Attribute,2
|
||||
p_110149_1_,par1,2
|
||||
p_110160_1_,par1,2
|
||||
p_110160_2_,par2,2
|
||||
p_110161_1_,par1EntityLivingData,2
|
||||
p_110162_1_,par1Entity,2
|
||||
p_110162_2_,par2,2
|
||||
@@ -214,7 +214,6 @@ p_110431_0_,par0Minecraft,2
|
||||
p_110439_1_,par1File,2
|
||||
p_110459_1_,par1ChatMessageComponent,2
|
||||
p_110459_2_,par2,2
|
||||
p_110460_1_,par1ChatMessageComponent,2
|
||||
p_110468_1_,par1,2
|
||||
p_110470_1_,par1,2
|
||||
p_110472_1_,par1,2
|
||||
@@ -260,8 +259,6 @@ p_110503_1_,par1Str,2
|
||||
p_110503_2_,par2JsonObject,2
|
||||
p_110504_1_,par1MetadataSectionSerializer,2
|
||||
p_110504_2_,par2Class,2
|
||||
p_110509_1_,par1,2
|
||||
p_110509_2_,par2,2
|
||||
p_110510_0_,par0GuiScreenTemporaryResourcePackSelectSelectionList,2
|
||||
p_110518_1_,par1TextureManager,2
|
||||
p_110526_1_,par1Str,2
|
||||
@@ -381,28 +378,7 @@ p_110786_1_,par1EntityEnderCrystal,2
|
||||
p_110788_1_,par1EntityItemFrame,2
|
||||
p_110790_1_,par1EntityFireball,2
|
||||
p_110791_1_,par1EntityFishHook,2
|
||||
p_110793_1_,par1FontRenderer,2
|
||||
p_110793_2_,par2TextureManager,2
|
||||
p_110793_3_,par3ItemStack,2
|
||||
p_110793_4_,par4,2
|
||||
p_110793_5_,par5,2
|
||||
p_110793_6_,par6Str,2
|
||||
p_110794_1_,par1FontRenderer,2
|
||||
p_110794_2_,par2TextureManager,2
|
||||
p_110794_3_,par3ItemStack,2
|
||||
p_110794_4_,par4,2
|
||||
p_110794_5_,par5,2
|
||||
p_110795_1_,par1FontRenderer,2
|
||||
p_110795_2_,par2TextureManager,2
|
||||
p_110795_3_,par3ItemStack,2
|
||||
p_110795_4_,par4,2
|
||||
p_110795_5_,par5,2
|
||||
p_110796_1_,par1EntityItem,2
|
||||
p_110797_1_,par1FontRenderer,2
|
||||
p_110797_2_,par2TextureManager,2
|
||||
p_110797_3_,par3ItemStack,2
|
||||
p_110797_4_,par4,2
|
||||
p_110797_5_,par5,2
|
||||
p_110799_1_,par1EntityLeashKnot,2
|
||||
p_110799_2_,par2,2
|
||||
p_110799_4_,par4,2
|
||||
@@ -417,20 +393,6 @@ p_110808_1_,par1EntityTNTPrimed,2
|
||||
p_110809_1_,par1EntityWitherSkull,2
|
||||
p_110813_1_,par1EntityLivingBase,2
|
||||
p_110817_1_,par1AbstractClientPlayer,2
|
||||
p_110818_1_,par1AbstractClientPlayer,2
|
||||
p_110818_2_,par2,2
|
||||
p_110818_3_,par3,2
|
||||
p_110819_1_,par1AbstractClientPlayer,2
|
||||
p_110819_2_,par2,2
|
||||
p_110819_4_,par4,2
|
||||
p_110819_6_,par6,2
|
||||
p_110819_8_,par8,2
|
||||
p_110819_9_,par9,2
|
||||
p_110820_1_,par1AbstractClientPlayer,2
|
||||
p_110820_2_,par2,2
|
||||
p_110821_1_,par1AbstractClientPlayer,2
|
||||
p_110821_2_,par2,2
|
||||
p_110821_3_,par3,2
|
||||
p_110827_1_,par1EntityLiving,2
|
||||
p_110827_2_,par2,2
|
||||
p_110827_4_,par4,2
|
||||
@@ -604,7 +566,6 @@ p_111124_1_,par1AttributeModifier,2
|
||||
p_111127_1_,par1UUID,2
|
||||
p_111128_1_,par1,2
|
||||
p_111130_1_,par1,2
|
||||
p_111140_1_,par1,2
|
||||
p_111145_1_,par1,2
|
||||
p_111147_1_,par1Multimap,2
|
||||
p_111148_1_,par1Multimap,2
|
||||
@@ -612,13 +573,9 @@ p_111149_1_,par1ModifiableAttributeInstance,2
|
||||
p_111150_1_,par1Attribute,2
|
||||
p_111151_1_,par1Attribute,2
|
||||
p_111152_1_,par1Str,2
|
||||
p_111155_1_,par1Str,2
|
||||
p_111156_1_,par1Attribute,2
|
||||
p_111157_1_,par1Attribute,2
|
||||
p_111158_1_,par1Str,2
|
||||
p_111159_1_,par1Attribute,2
|
||||
p_111168_1_,par1,2
|
||||
p_111181_1_,par1EntityLivingBase,2
|
||||
p_111183_1_,par1,2
|
||||
p_111183_2_,par2AttributeModifier,2
|
||||
p_111184_1_,par1Attribute,2
|
||||
@@ -669,15 +626,18 @@ p_111261_0_,par0AttributeInstance,2
|
||||
p_111262_0_,par0AttributeModifier,2
|
||||
p_111270_1_,par1AxisAlignedBB,2
|
||||
p_111271_1_,par1,2
|
||||
p_111275_1_,par1EntityPlayer,2
|
||||
p_111275_2_,par2TextureManager,2
|
||||
p_111275_3_,par3MapData,2
|
||||
p_111282_1_,par1EntityPlayer,2
|
||||
p_111282_2_,par2EntityLivingBase,2
|
||||
p_120016_0_,par0DedicatedServer,2
|
||||
p_120017_0_,par0MinecraftServerGui,2
|
||||
p_120033_0_,par0StatsComponent,2
|
||||
p_120035_1_,par1ArrayOfLong,2
|
||||
p_130000_1_,par1EntityLivingBase,2
|
||||
p_130000_2_,par2,2
|
||||
p_130000_4_,par4,2
|
||||
p_130000_6_,par6,2
|
||||
p_130000_8_,par8,2
|
||||
p_130000_9_,par9,2
|
||||
p_130002_1_,par1EntityPlayer,2
|
||||
p_130005_1_,par1EntityLiving,2
|
||||
p_130005_2_,par2,2
|
||||
@@ -685,20 +645,16 @@ p_130006_1_,par1EntityLiving,2
|
||||
p_130006_2_,par2,2
|
||||
p_130006_3_,par3,2
|
||||
p_130007_1_,par1EntityLiving,2
|
||||
p_130008_1_,par1EntityLivingBase,2
|
||||
p_130008_2_,par2,2
|
||||
p_130008_4_,par4,2
|
||||
p_130008_6_,par6,2
|
||||
p_130009_1_,par1EntityLivingBase,2
|
||||
p_130009_1_,par1AbstractClientPlayer,2
|
||||
p_130009_2_,par2,2
|
||||
p_130009_4_,par4,2
|
||||
p_130009_6_,par6,2
|
||||
p_130009_8_,par8,2
|
||||
p_130009_9_,par9,2
|
||||
p_130011_1_,par1Entity,2
|
||||
p_130013_10_,par10,2
|
||||
p_130013_1_,par1AbstractClientPlayer,2
|
||||
p_130013_1_,par1EntityLiving,2
|
||||
p_130013_2_,par2,2
|
||||
p_130013_4_,par4,2
|
||||
p_130013_6_,par6,2
|
||||
p_130013_8_,par8Str,2
|
||||
p_130013_9_,par9,2
|
||||
p_130013_3_,par3,2
|
||||
p_130015_1_,par1,2
|
||||
p_130015_2_,par2,2
|
||||
p_130015_3_,par3,2
|
||||
@@ -779,22 +735,12 @@ p_130119_5_,par5Tessellator,2
|
||||
p_130122_0_,par0McoServerList,2
|
||||
p_130122_1_,par1,2
|
||||
p_130123_1_,par1,2
|
||||
p_130125_0_,par0McoServerList,2
|
||||
p_130126_0_,par0McoServerList,2
|
||||
p_130126_1_,par1List,2
|
||||
p_130128_0_,par0McoServerList,2
|
||||
p_130129_1_,par1Session,2
|
||||
p_130198_1_,par1AbstractClientPlayer,2
|
||||
p_130198_2_,par2,2
|
||||
p_130198_3_,par3,2
|
||||
p_130198_4_,par4,2
|
||||
p_130199_1_,par1AbstractClientPlayer,2
|
||||
p_130199_2_,par2,2
|
||||
p_130199_4_,par4,2
|
||||
p_130199_6_,par6,2
|
||||
p_130220_1_,par1AbstractClientPlayer,2
|
||||
p_130220_2_,par2,2
|
||||
p_130220_3_,par3,2
|
||||
p_130225_1_,par1,2
|
||||
p_135011_0_,par0GuiLanguage,2
|
||||
p_135012_0_,par0GuiLanguage,2
|
||||
p_135013_0_,par0GuiLanguage,2
|
||||
p_135020_1_,par1JsonElement,2
|
||||
p_135020_2_,par2Type,2
|
||||
p_135020_3_,par3JsonDeserializationContext,2
|
||||
@@ -823,8 +769,6 @@ p_135066_1_,par1World,2
|
||||
p_135066_2_,par2,2
|
||||
p_135066_3_,par3,2
|
||||
p_135066_4_,par4,2
|
||||
p_135072_0_,par0ContainerRepair,2
|
||||
p_135073_0_,par0ContainerRepair,2
|
||||
p_140008_0_,par0GuiScreenOnlineServers,2
|
||||
p_140008_1_,par1,2
|
||||
p_140009_1_,par1,2
|
||||
@@ -840,16 +784,11 @@ p_140020_1_,par1,2
|
||||
p_140020_2_,par2,2
|
||||
p_140020_3_,par3,2
|
||||
p_140020_4_,par4,2
|
||||
p_140022_0_,par0GuiScreenOnlineServers,2
|
||||
p_140023_0_,par0GuiScreenOnlineServers,2
|
||||
p_140024_0_,par0GuiScreenOnlineServers,2
|
||||
p_140024_1_,par1McoServer,2
|
||||
p_140025_0_,par0GuiScreenOnlineServers,2
|
||||
p_140026_0_,par0GuiScreenOnlineServers,2
|
||||
p_140026_1_,par1Str,2
|
||||
p_140027_0_,par0GuiScreenOnlineServers,2
|
||||
p_140027_1_,par1,2
|
||||
p_140028_0_,par0GuiScreenOnlineServers,2
|
||||
p_140030_1_,par1,2
|
||||
p_140031_0_,par0GuiScreenOnlineServers,2
|
||||
p_140031_1_,par1,2
|
||||
@@ -859,7 +798,6 @@ p_140031_4_,par4,2
|
||||
p_140031_5_,par5,2
|
||||
p_140032_1_,par1,2
|
||||
p_140033_0_,par0GuiScreenOnlineServers,2
|
||||
p_140034_0_,par0GuiScreenOnlineServers,2
|
||||
p_140035_0_,par0GuiScreenOnlineServers,2
|
||||
p_140035_1_,par1,2
|
||||
p_140035_2_,par2,2
|
||||
@@ -878,10 +816,64 @@ p_140058_1_,par1McoServer,2
|
||||
p_140065_1_,par1List,2
|
||||
p_140068_1_,par1McoServer,2
|
||||
p_140068_2_,par2McoServer,2
|
||||
p_142010_1_,par1EntityPlayer,2
|
||||
p_142012_1_,par1Team,2
|
||||
p_142014_1_,par1EntityLivingBase,2
|
||||
p_142017_1_,par1,2
|
||||
p_142018_1_,par1EntityLivingBase,2
|
||||
p_142018_2_,par2EntityLivingBase,2
|
||||
p_142020_1_,par1Str,2
|
||||
p_142023_0_,par0GuiScreenOnlineServers,2
|
||||
p_142024_0_,par0Minecraft,2
|
||||
p_142030_0_,par0WorldClient,2
|
||||
p_142031_1_,par1Packet133TileEditorOpen,2
|
||||
p_142038_1_,par1,2
|
||||
p_142038_2_,par2,2
|
||||
p_142038_3_,par3,2
|
||||
p_142053_1_,par1Str,2
|
||||
p_142054_1_,par1Team,2
|
||||
p_143006_1_,par1,2
|
||||
p_143009_1_,par1World,2
|
||||
p_143009_2_,par2NBTTagCompound,2
|
||||
p_143011_1_,par1NBTTagCompound,2
|
||||
p_143012_1_,par1NBTTagCompound,2
|
||||
p_143017_1_,par1NBTTagCompound,2
|
||||
p_143020_1_,par1World,2
|
||||
p_143020_2_,par2NBTTagCompound,2
|
||||
p_143021_1_,par1,2
|
||||
p_143021_2_,par2,2
|
||||
p_143022_1_,par1NBTTagCompound,2
|
||||
p_143026_1_,par1,2
|
||||
p_143026_2_,par2,2
|
||||
p_143026_3_,par3StructureStart,2
|
||||
p_143027_1_,par1World,2
|
||||
p_143028_1_,par1,2
|
||||
p_143028_2_,par2,2
|
||||
p_143028_3_,par3,2
|
||||
p_143030_1_,par1,2
|
||||
p_143030_2_,par2,2
|
||||
p_143030_3_,par3,2
|
||||
p_143031_0_,par0Class,2
|
||||
p_143031_1_,par1Str,2
|
||||
p_143032_0_,par0NBTTagCompound,2
|
||||
p_143032_1_,par1World,2
|
||||
p_143033_0_,par0StructureStart,2
|
||||
p_143034_0_,par0Class,2
|
||||
p_143034_1_,par1Str,2
|
||||
p_143035_0_,par0NBTTagCompound,2
|
||||
p_143035_1_,par1World,2
|
||||
p_143036_0_,par0StructureComponent,2
|
||||
p_143042_1_,par1,2
|
||||
p_143042_2_,par2,2
|
||||
p_143043_1_,par1NBTTagCompound,2
|
||||
p_143043_2_,par2,2
|
||||
p_143043_3_,par3,2
|
||||
p_143047_1_,par1Str,2
|
||||
p_70000_1_,par1PlayerUsageSnooper,2
|
||||
p_70001_1_,par1PlayerUsageSnooper,2
|
||||
p_70003_1_,par1,2
|
||||
p_70003_2_,par2Str,2
|
||||
p_70006_1_,par1ChatMessageComponent,2
|
||||
p_70011_1_,par1,2
|
||||
p_70011_3_,par3,2
|
||||
p_70011_5_,par5,2
|
||||
@@ -1159,6 +1151,7 @@ p_70690_1_,par1PotionEffect,2
|
||||
p_70691_1_,par1,2
|
||||
p_70693_1_,par1EntityPlayer,2
|
||||
p_70695_1_,par1PotionEffect,2
|
||||
p_70695_2_,par2,2
|
||||
p_70778_1_,par1PathEntity,2
|
||||
p_70783_1_,par1,2
|
||||
p_70783_2_,par2,2
|
||||
@@ -1276,8 +1269,6 @@ p_71019_1_,par1ItemStack,2
|
||||
p_71019_2_,par2,2
|
||||
p_71020_1_,par1,2
|
||||
p_71021_1_,par1ItemStack,2
|
||||
p_71022_1_,par1EntityLivingBase,2
|
||||
p_71022_2_,par2,2
|
||||
p_71023_1_,par1,2
|
||||
p_71027_1_,par1,2
|
||||
p_71029_1_,par1StatBase,2
|
||||
@@ -3048,8 +3039,6 @@ p_73049_3_,par3,2
|
||||
p_73049_4_,par4,2
|
||||
p_73049_5_,par5,2
|
||||
p_73049_6_,par6,2
|
||||
p_73050_1_,par1Entity,2
|
||||
p_73050_2_,par2,2
|
||||
p_73052_1_,par1WorldSettings,2
|
||||
p_73057_1_,par1EnumCreatureType,2
|
||||
p_73057_2_,par2,2
|
||||
@@ -3403,6 +3392,8 @@ p_74015_1_,par1,2
|
||||
p_74017_0_,par0ServerData,2
|
||||
p_74019_0_,par0GuiMultiplayer,2
|
||||
p_74020_0_,par0GuiMultiplayer,2
|
||||
p_74042_0_,par0GuiLanguage,2
|
||||
p_74043_0_,par0GuiLanguage,2
|
||||
p_74059_0_,par0GuiSelectWorld,2
|
||||
p_74061_0_,par0GuiScreen,2
|
||||
p_74061_1_,par1Str,2
|
||||
@@ -4981,6 +4972,7 @@ p_76354_1_,par1Entity,2
|
||||
p_76356_0_,par0Entity,2
|
||||
p_76356_1_,par1Entity,2
|
||||
p_76358_0_,par0EntityLivingBase,2
|
||||
p_76360_1_,par1EntityLivingBase,2
|
||||
p_76362_0_,par0EntityFireball,2
|
||||
p_76362_1_,par1Entity,2
|
||||
p_76365_0_,par0EntityPlayer,2
|
||||
@@ -5497,6 +5489,11 @@ p_77014_4_,par4,2
|
||||
p_77014_6_,par6,2
|
||||
p_77014_8_,par8,2
|
||||
p_77014_9_,par9,2
|
||||
p_77015_1_,par1FontRenderer,2
|
||||
p_77015_2_,par2TextureManager,2
|
||||
p_77015_3_,par3ItemStack,2
|
||||
p_77015_4_,par4,2
|
||||
p_77015_5_,par5,2
|
||||
p_77017_1_,par1Tessellator,2
|
||||
p_77017_2_,par2,2
|
||||
p_77017_3_,par3,2
|
||||
@@ -5515,6 +5512,11 @@ p_77020_4_,par4,2
|
||||
p_77020_5_,par5,2
|
||||
p_77020_6_,par6,2
|
||||
p_77020_7_,par7,2
|
||||
p_77021_1_,par1FontRenderer,2
|
||||
p_77021_2_,par2TextureManager,2
|
||||
p_77021_3_,par3ItemStack,2
|
||||
p_77021_4_,par4,2
|
||||
p_77021_5_,par5,2
|
||||
p_77026_1_,par1Tessellator,2
|
||||
p_77026_2_,par2Icon,2
|
||||
p_77028_1_,par1EntityLightningBolt,2
|
||||
@@ -5537,6 +5539,10 @@ p_77031_9_,par9,2
|
||||
p_77032_1_,par1EntityLivingBase,2
|
||||
p_77032_2_,par2,2
|
||||
p_77032_3_,par3,2
|
||||
p_77033_1_,par1EntityLivingBase,2
|
||||
p_77033_2_,par2,2
|
||||
p_77033_4_,par4,2
|
||||
p_77033_6_,par6,2
|
||||
p_77034_1_,par1,2
|
||||
p_77034_2_,par2,2
|
||||
p_77034_3_,par3,2
|
||||
@@ -5687,7 +5693,7 @@ p_77097_3_,par3,2
|
||||
p_77099_1_,par1EntityPig,2
|
||||
p_77099_2_,par2,2
|
||||
p_77099_3_,par3,2
|
||||
p_77100_1_,par1EntityLivingBase,2
|
||||
p_77100_1_,par1AbstractClientPlayer,2
|
||||
p_77100_2_,par2,2
|
||||
p_77101_1_,par1EntityLivingBase,2
|
||||
p_77101_2_,par2,2
|
||||
@@ -5695,17 +5701,17 @@ p_77101_4_,par4,2
|
||||
p_77101_6_,par6,2
|
||||
p_77101_8_,par8,2
|
||||
p_77101_9_,par9,2
|
||||
p_77102_1_,par1EntityLivingBase,2
|
||||
p_77102_1_,par1AbstractClientPlayer,2
|
||||
p_77102_2_,par2,2
|
||||
p_77102_3_,par3,2
|
||||
p_77102_4_,par4,2
|
||||
p_77104_1_,par1AbstractClientPlayer,2
|
||||
p_77104_2_,par2,2
|
||||
p_77105_1_,par1EntityLivingBase,2
|
||||
p_77105_1_,par1AbstractClientPlayer,2
|
||||
p_77105_2_,par2,2
|
||||
p_77105_4_,par4,2
|
||||
p_77105_6_,par6,2
|
||||
p_77107_1_,par1EntityLivingBase,2
|
||||
p_77107_1_,par1AbstractClientPlayer,2
|
||||
p_77107_2_,par2,2
|
||||
p_77107_3_,par3,2
|
||||
p_77113_1_,par1EntitySheep,2
|
||||
@@ -5812,6 +5818,8 @@ p_77215_2_,par2,2
|
||||
p_77216_1_,par1,2
|
||||
p_77218_1_,par1,2
|
||||
p_77219_1_,par1GuiButton,2
|
||||
p_77220_1_,par1,2
|
||||
p_77220_2_,par2,2
|
||||
p_77222_1_,par1,2
|
||||
p_77222_2_,par2,2
|
||||
p_77222_3_,par3Tessellator,2
|
||||
@@ -6320,6 +6328,9 @@ p_78280_1_,par1Str,2
|
||||
p_78280_2_,par2,2
|
||||
p_78282_0_,par0Str,2
|
||||
p_78283_1_,par1Str,2
|
||||
p_78319_1_,par1EntityPlayer,2
|
||||
p_78319_2_,par2TextureManager,2
|
||||
p_78319_3_,par3MapData,2
|
||||
p_78334_1_,par1StatCrafting,2
|
||||
p_78334_2_,par2StatCrafting,2
|
||||
p_78337_1_,par1StatCrafting,2
|
||||
@@ -7100,7 +7111,12 @@ p_82404_4_,par4,2
|
||||
p_82404_6_,par6,2
|
||||
p_82404_8_,par8,2
|
||||
p_82404_9_,par9,2
|
||||
p_82408_1_,par1EntityLiving,2
|
||||
p_82406_1_,par1FontRenderer,2
|
||||
p_82406_2_,par2TextureManager,2
|
||||
p_82406_3_,par3ItemStack,2
|
||||
p_82406_4_,par4,2
|
||||
p_82406_5_,par5,2
|
||||
p_82408_1_,par1EntityLivingBase,2
|
||||
p_82408_2_,par2,2
|
||||
p_82408_3_,par3,2
|
||||
p_82409_1_,par1EntityWitch,2
|
||||
@@ -7464,7 +7480,9 @@ p_82842_1_,par1EntityItemFrame,2
|
||||
p_82846_1_,par1EntityPlayer,2
|
||||
p_82846_2_,par2,2
|
||||
p_82847_1_,par1ICrafting,2
|
||||
p_82849_0_,par0ContainerRepair,2
|
||||
p_82850_1_,par1Str,2
|
||||
p_82851_0_,par0ContainerRepair,2
|
||||
p_82869_1_,par1EntityPlayer,2
|
||||
p_82870_1_,par1EntityPlayer,2
|
||||
p_82870_2_,par2ItemStack,2
|
||||
@@ -7658,6 +7676,7 @@ p_92044_1_,par1,2
|
||||
p_92045_1_,par1,2
|
||||
p_92046_1_,par1,2
|
||||
p_92058_1_,par1ItemStack,2
|
||||
p_92062_1_,par1ChatMessageComponent,2
|
||||
p_92070_1_,par1Str,2
|
||||
p_92070_2_,par2,2
|
||||
p_92070_3_,par3,2
|
||||
@@ -7767,6 +7786,12 @@ p_94146_1_,par1EntityMinecartTNT,2
|
||||
p_94146_2_,par2,2
|
||||
p_94146_3_,par3Block,2
|
||||
p_94146_4_,par4,2
|
||||
p_94148_1_,par1FontRenderer,2
|
||||
p_94148_2_,par2TextureManager,2
|
||||
p_94148_3_,par3ItemStack,2
|
||||
p_94148_4_,par4,2
|
||||
p_94148_5_,par5,2
|
||||
p_94148_6_,par6Str,2
|
||||
p_94149_1_,par1,2
|
||||
p_94149_2_,par2,2
|
||||
p_94149_3_,par3Icon,2
|
||||
@@ -8027,6 +8052,7 @@ p_96095_1_,par1,2
|
||||
p_96095_2_,par2,2
|
||||
p_96095_3_,par3,2
|
||||
p_96095_4_,par4,2
|
||||
p_96098_1_,par1ItemStack,2
|
||||
p_96099_1_,par1,2
|
||||
p_96102_1_,par1,2
|
||||
p_96104_1_,par1Str,2
|
||||
@@ -8221,6 +8247,13 @@ p_96449_4_,par4,2
|
||||
p_96449_6_,par6,2
|
||||
p_96449_8_,par8Str,2
|
||||
p_96449_9_,par9,2
|
||||
p_96450_10_,par10,2
|
||||
p_96450_1_,par1AbstractClientPlayer,2
|
||||
p_96450_2_,par2,2
|
||||
p_96450_4_,par4,2
|
||||
p_96450_6_,par6,2
|
||||
p_96450_8_,par8Str,2
|
||||
p_96450_9_,par9,2
|
||||
p_96456_1_,par1ServerScoreboard,2
|
||||
p_96456_2_,par2EntityPlayerMP,2
|
||||
p_96457_1_,par1EntityPlayer,2
|
||||
@@ -8342,7 +8375,7 @@ p_96660_1_,par1,2
|
||||
p_96662_1_,par1Str,2
|
||||
p_96664_1_,par1Str,2
|
||||
p_96666_1_,par1Str,2
|
||||
p_96667_0_,par0ScorePlayerTeam,2
|
||||
p_96667_0_,par0Team,2
|
||||
p_96667_1_,par1Str,2
|
||||
p_96681_1_,par1Str,2
|
||||
p_98034_1_,par1EntityPlayer,2
|
||||
@@ -8400,6 +8433,9 @@ p_98235_1_,par1Str,2
|
||||
p_98235_2_,par2Throwable,2
|
||||
p_98236_1_,par1Str,2
|
||||
p_98237_0_,par0LogAgent,2
|
||||
p_98247_0_,par0McoServerList,2
|
||||
p_98247_1_,par1List,2
|
||||
p_98249_0_,par0McoServerList,2
|
||||
p_98263_1_,par1,2
|
||||
p_98263_2_,par2,2
|
||||
p_98263_3_,par3,2
|
||||
@@ -9260,7 +9296,6 @@ p_i1279_1_,par1,2
|
||||
p_i1279_2_,par2,2
|
||||
p_i1279_3_,par3,2
|
||||
p_i1279_4_,par4,2
|
||||
p_i1280_1_,par1StitchHolder,2
|
||||
p_i1281_1_,par1,2
|
||||
p_i1281_2_,par2Str,2
|
||||
p_i1282_1_,par1Str,2
|
||||
@@ -10054,7 +10089,6 @@ p_i1609_1_,par1Str,2
|
||||
p_i1609_2_,par2,2
|
||||
p_i1609_4_,par4,2
|
||||
p_i1609_6_,par6,2
|
||||
p_i1610_1_,par1Attribute,2
|
||||
p_i1611_1_,par1EntityLivingBase,2
|
||||
p_i1612_1_,par1EntityLiving,2
|
||||
p_i1613_1_,par1EntityLiving,2
|
||||
@@ -10113,8 +10147,6 @@ p_i1637_1_,par1EntityCreature,2
|
||||
p_i1638_1_,par1EntityCreature,2
|
||||
p_i1638_2_,par2,2
|
||||
p_i1638_4_,par4,2
|
||||
p_i1639_1_,par1EntityCreature,2
|
||||
p_i1639_2_,par2,2
|
||||
p_i1640_1_,par1EntityCreature,2
|
||||
p_i1640_2_,par2,2
|
||||
p_i1640_4_,par4,2
|
||||
@@ -11655,17 +11687,44 @@ p_i2329_2_,par2McoServerListEmptyAnon,2
|
||||
p_i2330_1_,par1,2
|
||||
p_i2330_2_,par2Str,2
|
||||
p_i2330_3_,par3,2
|
||||
p_i2331_1_,par1DedicatedServer,2
|
||||
p_i2332_1_,par1DedicatedServer,2
|
||||
p_i2333_1_,par1DedicatedServer,2
|
||||
p_i2334_1_,par1MinecraftServerGui,2
|
||||
p_i2334_2_,par2JTextField,2
|
||||
p_i2335_1_,par1MinecraftServerGui,2
|
||||
p_i2336_1_,par1MinecraftServer,2
|
||||
p_i2337_1_,par1MinecraftServer,2
|
||||
p_i2338_1_,par1StatsComponent,2
|
||||
p_i2339_1_,par1JTextArea,2
|
||||
p_i2340_1_,par1TextAreaLogHandler,2
|
||||
p_i2341_1_,par1Minecraft,2
|
||||
p_i2342_1_,par1WorldClient,2
|
||||
p_i2343_1_,par1WorldClient,2
|
||||
p_i2344_1_,par1StitchHolder,2
|
||||
p_i2344_2_,par2Str,2
|
||||
p_i2345_1_,par1,2
|
||||
p_i2345_2_,par2,2
|
||||
p_i2345_3_,par3,2
|
||||
p_i2345_4_,par4,2
|
||||
p_i2346_1_,par1Packet44UpdateAttributes,2
|
||||
p_i2346_2_,par2Str,2
|
||||
p_i2346_3_,par3,2
|
||||
p_i2346_5_,par5Collection,2
|
||||
p_i2347_1_,par1EntityCreature,2
|
||||
p_i2347_2_,par2,2
|
||||
p_i2348_1_,par1EntityZombie,2
|
||||
p_i2348_2_,par2,2
|
||||
p_i2348_3_,par3,2
|
||||
p_i2349_1_,par1EntityZombie,2
|
||||
p_i2349_2_,par2,2
|
||||
p_i2349_3_,par3,2
|
||||
p_i2349_4_,par4EntityZombieINNER1,2
|
||||
p_i2350_1_,par1,2
|
||||
p_i2361_1_,par1DedicatedServer,2
|
||||
p_i2362_1_,par1DedicatedServer,2
|
||||
p_i2363_1_,par1DedicatedServer,2
|
||||
p_i2364_1_,par1MinecraftServerGui,2
|
||||
p_i2364_2_,par2JTextField,2
|
||||
p_i2365_1_,par1MinecraftServerGui,2
|
||||
p_i2366_1_,par1MinecraftServer,2
|
||||
p_i2367_1_,par1MinecraftServer,2
|
||||
p_i2368_1_,par1StatsComponent,2
|
||||
p_i2369_1_,par1JTextArea,2
|
||||
p_i2370_1_,par1TextAreaLogHandler,2
|
||||
p_i43000_1_,par1ArrayOfInteger,2
|
||||
p_i43001_1_,par1Str,2
|
||||
p_i43002_1_,par1,2
|
||||
p_i43002_2_,par2,2
|
||||
p_main_0_,par0ArrayOfStr,2
|
||||
p_openConnection_1_,par1URL,2
|
||||
p_paint_1_,par1Graphics,2
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\src\CallableSuspiciousClasses.java minecraft_patched\net\minecraft\src\CallableSuspiciousClasses.java
|
||||
--- minecraft\net\minecraft\src\CallableSuspiciousClasses.java Sun Jun 30 21:44:00 2013
|
||||
+++ minecraft_patched\net\minecraft\src\CallableSuspiciousClasses.java Sun Jun 30 21:45:42 2013
|
||||
--- minecraft\net\minecraft\src\CallableSuspiciousClasses.java Tue Sep 17 13:58:48 2013
|
||||
+++ minecraft_patched\net\minecraft\src\CallableSuspiciousClasses.java Tue Sep 17 14:01:01 2013
|
||||
@@ -21,9 +21,14 @@
|
||||
|
||||
public String func_85085_a() throws SecurityException, NoSuchFieldException, IllegalAccessException, IllegalArgumentException {
|
||||
@@ -29,8 +29,8 @@ diff -r -U 3 minecraft\net\minecraft\src\CallableSuspiciousClasses.java minecraf
|
||||
}
|
||||
}
|
||||
diff -r -U 3 minecraft\net\minecraft\src\ComponentStrongholdRightTurn.java minecraft_patched\net\minecraft\src\ComponentStrongholdRightTurn.java
|
||||
--- minecraft\net\minecraft\src\ComponentStrongholdRightTurn.java Sun Jun 30 21:44:00 2013
|
||||
+++ minecraft_patched\net\minecraft\src\ComponentStrongholdRightTurn.java Sun Jun 30 21:45:42 2013
|
||||
--- minecraft\net\minecraft\src\ComponentStrongholdRightTurn.java Tue Sep 17 13:58:48 2013
|
||||
+++ minecraft_patched\net\minecraft\src\ComponentStrongholdRightTurn.java Tue Sep 17 14:01:01 2013
|
||||
@@ -11,6 +11,10 @@
|
||||
|
||||
public class ComponentStrongholdRightTurn extends ComponentStrongholdLeftTurn {
|
||||
@@ -43,9 +43,9 @@ diff -r -U 3 minecraft\net\minecraft\src\ComponentStrongholdRightTurn.java minec
|
||||
if(this.field_74885_f != 2 && this.field_74885_f != 3) {
|
||||
this.func_74989_b((ComponentStrongholdStairs2)p_74861_1_, p_74861_2_, p_74861_3_, 1, 1);
|
||||
diff -r -U 3 minecraft\net\minecraft\src\DedicatedServer.java minecraft_patched\net\minecraft\src\DedicatedServer.java
|
||||
--- minecraft\net\minecraft\src\DedicatedServer.java Sun Jun 30 21:44:01 2013
|
||||
+++ minecraft_patched\net\minecraft\src\DedicatedServer.java Sun Jun 30 21:45:42 2013
|
||||
@@ -207,7 +207,7 @@
|
||||
--- minecraft\net\minecraft\src\DedicatedServer.java Tue Sep 17 13:58:48 2013
|
||||
+++ minecraft_patched\net\minecraft\src\DedicatedServer.java Tue Sep 17 14:01:01 2013
|
||||
@@ -208,7 +208,7 @@
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
@@ -54,44 +54,9 @@ diff -r -U 3 minecraft\net\minecraft\src\DedicatedServer.java minecraft_patched\
|
||||
super.func_71190_q();
|
||||
this.func_71333_ah();
|
||||
}
|
||||
diff -r -U 3 minecraft\net\minecraft\src\EntityDragon.java minecraft_patched\net\minecraft\src\EntityDragon.java
|
||||
--- minecraft\net\minecraft\src\EntityDragon.java Sun Jun 30 21:44:01 2013
|
||||
+++ minecraft_patched\net\minecraft\src\EntityDragon.java Sun Jun 30 21:45:42 2013
|
||||
@@ -551,4 +551,14 @@
|
||||
protected float func_70599_aP() {
|
||||
return 5.0F;
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public float func_70667_aM() {
|
||||
+ return 0.0f;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public float func_110183_aJ() {
|
||||
+ return 0.0f;
|
||||
+ }
|
||||
}
|
||||
diff -r -U 3 minecraft\net\minecraft\src\EntityWither.java minecraft_patched\net\minecraft\src\EntityWither.java
|
||||
--- minecraft\net\minecraft\src\EntityWither.java Sun Jun 30 21:44:02 2013
|
||||
+++ minecraft_patched\net\minecraft\src\EntityWither.java Sun Jun 30 21:45:42 2013
|
||||
@@ -458,4 +458,13 @@
|
||||
this.field_70154_o = null;
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ public float func_70667_aM() {
|
||||
+ return 0.0f;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public float func_110183_aJ() {
|
||||
+ return 0.0f;
|
||||
+ }
|
||||
}
|
||||
diff -r -U 3 minecraft\net\minecraft\src\EnumChatFormatting.java minecraft_patched\net\minecraft\src\EnumChatFormatting.java
|
||||
--- minecraft\net\minecraft\src\EnumChatFormatting.java Sun Jun 30 21:44:02 2013
|
||||
+++ minecraft_patched\net\minecraft\src\EnumChatFormatting.java Sun Jun 30 21:45:42 2013
|
||||
--- minecraft\net\minecraft\src\EnumChatFormatting.java Tue Sep 17 13:58:49 2013
|
||||
+++ minecraft_patched\net\minecraft\src\EnumChatFormatting.java Tue Sep 17 14:01:01 2013
|
||||
@@ -38,7 +38,7 @@
|
||||
private final String field_96304_B;
|
||||
|
||||
@@ -102,8 +67,8 @@ diff -r -U 3 minecraft\net\minecraft\src\EnumChatFormatting.java minecraft_patch
|
||||
|
||||
private EnumChatFormatting(char p_i1337_3_, boolean p_i1337_4_) {
|
||||
diff -r -U 3 minecraft\net\minecraft\src\FileResourcePack.java minecraft_patched\net\minecraft\src\FileResourcePack.java
|
||||
--- minecraft\net\minecraft\src\FileResourcePack.java Sun Jun 30 21:44:02 2013
|
||||
+++ minecraft_patched\net\minecraft\src\FileResourcePack.java Sun Jun 30 21:45:42 2013
|
||||
--- minecraft\net\minecraft\src\FileResourcePack.java Tue Sep 17 13:58:49 2013
|
||||
+++ minecraft_patched\net\minecraft\src\FileResourcePack.java Tue Sep 17 14:01:01 2013
|
||||
@@ -84,12 +84,18 @@
|
||||
|
||||
protected void finalize() {
|
||||
@@ -124,8 +89,8 @@ diff -r -U 3 minecraft\net\minecraft\src\FileResourcePack.java minecraft_patched
|
||||
}
|
||||
|
||||
diff -r -U 3 minecraft\net\minecraft\src\FolderResourcePack.java minecraft_patched\net\minecraft\src\FolderResourcePack.java
|
||||
--- minecraft\net\minecraft\src\FolderResourcePack.java Sun Jun 30 21:44:02 2013
|
||||
+++ minecraft_patched\net\minecraft\src\FolderResourcePack.java Sun Jun 30 21:46:52 2013
|
||||
--- minecraft\net\minecraft\src\FolderResourcePack.java Tue Sep 17 13:58:49 2013
|
||||
+++ minecraft_patched\net\minecraft\src\FolderResourcePack.java Tue Sep 17 14:01:01 2013
|
||||
@@ -29,7 +29,7 @@
|
||||
HashSet var1 = Sets.newHashSet();
|
||||
File var2 = new File(this.field_110597_b, "assets/");
|
||||
@@ -136,9 +101,9 @@ diff -r -U 3 minecraft\net\minecraft\src\FolderResourcePack.java minecraft_patch
|
||||
|
||||
for(int var5 = 0; var5 < var4; ++var5) {
|
||||
diff -r -U 3 minecraft\net\minecraft\src\FontRenderer.java minecraft_patched\net\minecraft\src\FontRenderer.java
|
||||
--- minecraft\net\minecraft\src\FontRenderer.java Sun Jun 30 21:44:02 2013
|
||||
+++ minecraft_patched\net\minecraft\src\FontRenderer.java Sun Jun 30 21:45:42 2013
|
||||
@@ -625,8 +625,6 @@
|
||||
--- minecraft\net\minecraft\src\FontRenderer.java Tue Sep 17 13:58:49 2013
|
||||
+++ minecraft_patched\net\minecraft\src\FontRenderer.java Tue Sep 17 14:01:01 2013
|
||||
@@ -630,8 +630,6 @@
|
||||
case 10:
|
||||
--var5;
|
||||
break;
|
||||
@@ -147,7 +112,7 @@ diff -r -U 3 minecraft\net\minecraft\src\FontRenderer.java minecraft_patched\net
|
||||
case 167:
|
||||
if(var5 < var3 - 1) {
|
||||
++var5;
|
||||
@@ -640,6 +638,8 @@
|
||||
@@ -645,6 +643,8 @@
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -157,8 +122,8 @@ diff -r -U 3 minecraft\net\minecraft\src\FontRenderer.java minecraft_patched\net
|
||||
var4 += this.func_78263_a(var8);
|
||||
if(var7) {
|
||||
diff -r -U 3 minecraft\net\minecraft\src\IntegratedServer.java minecraft_patched\net\minecraft\src\IntegratedServer.java
|
||||
--- minecraft\net\minecraft\src\IntegratedServer.java Sun Jun 30 21:44:02 2013
|
||||
+++ minecraft_patched\net\minecraft\src\IntegratedServer.java Sun Jun 30 21:45:42 2013
|
||||
--- minecraft\net\minecraft\src\IntegratedServer.java Tue Sep 17 13:58:50 2013
|
||||
+++ minecraft_patched\net\minecraft\src\IntegratedServer.java Tue Sep 17 14:01:01 2013
|
||||
@@ -103,7 +103,7 @@
|
||||
return true;
|
||||
}
|
||||
@@ -169,9 +134,9 @@ diff -r -U 3 minecraft\net\minecraft\src\IntegratedServer.java minecraft_patched
|
||||
this.field_71348_o = this.field_71347_n.func_71752_f();
|
||||
if(!var1 && this.field_71348_o) {
|
||||
diff -r -U 3 minecraft\net\minecraft\src\Minecraft.java minecraft_patched\net\minecraft\src\Minecraft.java
|
||||
--- minecraft\net\minecraft\src\Minecraft.java Sun Jun 30 21:44:05 2013
|
||||
+++ minecraft_patched\net\minecraft\src\Minecraft.java Sun Jun 30 21:45:42 2013
|
||||
@@ -599,8 +599,8 @@
|
||||
--- minecraft\net\minecraft\src\Minecraft.java Tue Sep 17 13:58:50 2013
|
||||
+++ minecraft_patched\net\minecraft\src\Minecraft.java Tue Sep 17 14:01:01 2013
|
||||
@@ -604,8 +604,8 @@
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -182,7 +147,7 @@ diff -r -U 3 minecraft\net\minecraft\src\Minecraft.java minecraft_patched\net\mi
|
||||
if(this.field_71425_J) {
|
||||
if(this.field_71434_R && this.field_71433_S != null) {
|
||||
this.func_71377_b(this.field_71433_S);
|
||||
@@ -621,23 +621,20 @@
|
||||
@@ -626,23 +626,20 @@
|
||||
}
|
||||
continue;
|
||||
}
|
||||
@@ -220,8 +185,8 @@ diff -r -U 3 minecraft\net\minecraft\src\Minecraft.java minecraft_patched\net\mi
|
||||
}
|
||||
|
||||
diff -r -U 3 minecraft\net\minecraft\src\RConThreadClient.java minecraft_patched\net\minecraft\src\RConThreadClient.java
|
||||
--- minecraft\net\minecraft\src\RConThreadClient.java Sun Jun 30 21:44:05 2013
|
||||
+++ minecraft_patched\net\minecraft\src\RConThreadClient.java Sun Jun 30 21:45:42 2013
|
||||
--- minecraft\net\minecraft\src\RConThreadClient.java Tue Sep 17 13:58:51 2013
|
||||
+++ minecraft_patched\net\minecraft\src\RConThreadClient.java Tue Sep 17 14:01:01 2013
|
||||
@@ -32,8 +32,8 @@
|
||||
}
|
||||
|
||||
@@ -261,8 +226,8 @@ diff -r -U 3 minecraft\net\minecraft\src\RConThreadClient.java minecraft_patched
|
||||
|
||||
private void func_72654_a(int p_72654_1_, int p_72654_2_, String p_72654_3_) throws IOException {
|
||||
diff -r -U 3 minecraft\net\minecraft\src\RenderBlocks.java minecraft_patched\net\minecraft\src\RenderBlocks.java
|
||||
--- minecraft\net\minecraft\src\RenderBlocks.java Sun Jun 30 21:44:05 2013
|
||||
+++ minecraft_patched\net\minecraft\src\RenderBlocks.java Sun Jun 30 21:45:42 2013
|
||||
--- minecraft\net\minecraft\src\RenderBlocks.java Tue Sep 17 13:58:51 2013
|
||||
+++ minecraft_patched\net\minecraft\src\RenderBlocks.java Tue Sep 17 14:01:01 2013
|
||||
@@ -1960,16 +1960,16 @@
|
||||
float var25 = (float)(p_78589_2_ + 1);
|
||||
float var26 = (float)(p_78589_4_ + 0);
|
||||
@@ -294,9 +259,9 @@ diff -r -U 3 minecraft\net\minecraft\src\RenderBlocks.java minecraft_patched\net
|
||||
var5.func_78374_a((double)var25, (double)p_78589_3_ + 0.015625D, (double)var26, (double)var8.func_94212_f(), (double)var8.func_94206_g());
|
||||
var5.func_78374_a((double)var24, (double)p_78589_3_ + 0.015625D, (double)var26, (double)var8.func_94209_e(), (double)var8.func_94206_g());
|
||||
diff -r -U 3 minecraft\net\minecraft\src\RenderGlobal.java minecraft_patched\net\minecraft\src\RenderGlobal.java
|
||||
--- minecraft\net\minecraft\src\RenderGlobal.java Sun Jun 30 21:44:06 2013
|
||||
+++ minecraft_patched\net\minecraft\src\RenderGlobal.java Sun Jun 30 21:45:42 2013
|
||||
@@ -1435,7 +1435,7 @@
|
||||
--- minecraft\net\minecraft\src\RenderGlobal.java Tue Sep 17 13:58:51 2013
|
||||
+++ minecraft_patched\net\minecraft\src\RenderGlobal.java Tue Sep 17 14:01:01 2013
|
||||
@@ -1445,7 +1445,7 @@
|
||||
double var15 = this.field_72777_q.field_71451_h.field_70165_t - p_72726_2_;
|
||||
double var17 = this.field_72777_q.field_71451_h.field_70163_u - p_72726_4_;
|
||||
double var19 = this.field_72777_q.field_71451_h.field_70161_v - p_72726_6_;
|
||||
@@ -306,8 +271,8 @@ diff -r -U 3 minecraft\net\minecraft\src\RenderGlobal.java minecraft_patched\net
|
||||
this.field_72777_q.field_71452_i.func_78873_a(var21 = new EntityHugeExplodeFX(this.field_72769_h, p_72726_2_, p_72726_4_, p_72726_6_, p_72726_8_, p_72726_10_, p_72726_12_));
|
||||
} else if(p_72726_1_.equals("largeexplode")) {
|
||||
diff -r -U 3 minecraft\net\minecraft\src\SoundPoolURLConnection.java minecraft_patched\net\minecraft\src\SoundPoolURLConnection.java
|
||||
--- minecraft\net\minecraft\src\SoundPoolURLConnection.java Sun Jun 30 21:44:06 2013
|
||||
+++ minecraft_patched\net\minecraft\src\SoundPoolURLConnection.java Sun Jun 30 21:45:42 2013
|
||||
--- minecraft\net\minecraft\src\SoundPoolURLConnection.java Tue Sep 17 13:58:51 2013
|
||||
+++ minecraft_patched\net\minecraft\src\SoundPoolURLConnection.java Tue Sep 17 14:01:01 2013
|
||||
@@ -22,7 +22,11 @@
|
||||
public void connect() {}
|
||||
|
||||
@@ -321,8 +286,8 @@ diff -r -U 3 minecraft\net\minecraft\src\SoundPoolURLConnection.java minecraft_p
|
||||
|
||||
// $FF: synthetic method
|
||||
diff -r -U 3 minecraft\net\minecraft\src\TcpMasterThread.java minecraft_patched\net\minecraft\src\TcpMasterThread.java
|
||||
--- minecraft\net\minecraft\src\TcpMasterThread.java Sun Jun 30 21:44:06 2013
|
||||
+++ minecraft_patched\net\minecraft\src\TcpMasterThread.java Sun Jun 30 21:45:42 2013
|
||||
--- minecraft\net\minecraft\src\TcpMasterThread.java Tue Sep 17 13:58:51 2013
|
||||
+++ minecraft_patched\net\minecraft\src\TcpMasterThread.java Tue Sep 17 14:01:01 2013
|
||||
@@ -11,6 +11,7 @@
|
||||
this.field_74504_a = p_i1395_1_;
|
||||
}
|
||||
@@ -332,8 +297,8 @@ diff -r -U 3 minecraft\net\minecraft\src\TcpMasterThread.java minecraft_patched\
|
||||
try {
|
||||
Thread.sleep(5000L);
|
||||
diff -r -U 3 minecraft\net\minecraft\src\ThreadedFileIOBase.java minecraft_patched\net\minecraft\src\ThreadedFileIOBase.java
|
||||
--- minecraft\net\minecraft\src\ThreadedFileIOBase.java Sun Jun 30 21:44:06 2013
|
||||
+++ minecraft_patched\net\minecraft\src\ThreadedFileIOBase.java Sun Jun 30 21:45:42 2013
|
||||
--- minecraft\net\minecraft\src\ThreadedFileIOBase.java Tue Sep 17 13:58:52 2013
|
||||
+++ minecraft_patched\net\minecraft\src\ThreadedFileIOBase.java Tue Sep 17 14:01:01 2013
|
||||
@@ -20,6 +20,7 @@
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
diff -r -U 3 minecraft_server\net\minecraft\src\CallableSuspiciousClasses.java minecraft_server_patched\net\minecraft\src\CallableSuspiciousClasses.java
|
||||
--- minecraft_server\net\minecraft\src\CallableSuspiciousClasses.java Sun Jun 30 21:45:24 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\CallableSuspiciousClasses.java Sun Jun 30 21:45:41 2013
|
||||
--- minecraft_server\net\minecraft\src\CallableSuspiciousClasses.java Tue Sep 17 14:00:13 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\CallableSuspiciousClasses.java Tue Sep 17 14:01:07 2013
|
||||
@@ -21,9 +21,14 @@
|
||||
|
||||
public String func_85085_a() throws SecurityException, NoSuchFieldException, IllegalAccessException, IllegalArgumentException {
|
||||
@@ -30,8 +30,8 @@ diff -r -U 3 minecraft_server\net\minecraft\src\CallableSuspiciousClasses.java m
|
||||
}
|
||||
}
|
||||
diff -r -U 3 minecraft_server\net\minecraft\src\ComponentStrongholdRightTurn.java minecraft_server_patched\net\minecraft\src\ComponentStrongholdRightTurn.java
|
||||
--- minecraft_server\net\minecraft\src\ComponentStrongholdRightTurn.java Sun Jun 30 21:45:25 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\ComponentStrongholdRightTurn.java Sun Jun 30 21:45:41 2013
|
||||
--- minecraft_server\net\minecraft\src\ComponentStrongholdRightTurn.java Tue Sep 17 14:00:14 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\ComponentStrongholdRightTurn.java Tue Sep 17 14:01:07 2013
|
||||
@@ -11,6 +11,10 @@
|
||||
|
||||
public class ComponentStrongholdRightTurn extends ComponentStrongholdLeftTurn {
|
||||
@@ -44,9 +44,9 @@ diff -r -U 3 minecraft_server\net\minecraft\src\ComponentStrongholdRightTurn.jav
|
||||
if(this.field_74885_f != 2 && this.field_74885_f != 3) {
|
||||
this.func_74989_b((ComponentStrongholdStairs2)p_74861_1_, p_74861_2_, p_74861_3_, 1, 1);
|
||||
diff -r -U 3 minecraft_server\net\minecraft\src\DedicatedServer.java minecraft_server_patched\net\minecraft\src\DedicatedServer.java
|
||||
--- minecraft_server\net\minecraft\src\DedicatedServer.java Sun Jun 30 21:45:25 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\DedicatedServer.java Sun Jun 30 21:45:41 2013
|
||||
@@ -208,7 +208,7 @@
|
||||
--- minecraft_server\net\minecraft\src\DedicatedServer.java Tue Sep 17 14:00:14 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\DedicatedServer.java Tue Sep 17 14:01:07 2013
|
||||
@@ -209,7 +209,7 @@
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
@@ -56,8 +56,8 @@ diff -r -U 3 minecraft_server\net\minecraft\src\DedicatedServer.java minecraft_s
|
||||
this.func_71333_ah();
|
||||
}
|
||||
diff -r -U 3 minecraft_server\net\minecraft\src\EnumChatFormatting.java minecraft_server_patched\net\minecraft\src\EnumChatFormatting.java
|
||||
--- minecraft_server\net\minecraft\src\EnumChatFormatting.java Sun Jun 30 21:45:26 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\EnumChatFormatting.java Sun Jun 30 21:45:41 2013
|
||||
--- minecraft_server\net\minecraft\src\EnumChatFormatting.java Tue Sep 17 14:00:14 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\EnumChatFormatting.java Tue Sep 17 14:01:07 2013
|
||||
@@ -38,7 +38,7 @@
|
||||
private final String field_96304_B;
|
||||
|
||||
@@ -68,8 +68,8 @@ diff -r -U 3 minecraft_server\net\minecraft\src\EnumChatFormatting.java minecraf
|
||||
|
||||
private EnumChatFormatting(char p_i1337_3_, boolean p_i1337_4_) {
|
||||
diff -r -U 3 minecraft_server\net\minecraft\src\MemoryConnection.java minecraft_server_patched\net\minecraft\src\MemoryConnection.java
|
||||
--- minecraft_server\net\minecraft\src\MemoryConnection.java Sun Jun 30 21:45:26 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\MemoryConnection.java Sun Jun 30 21:45:41 2013
|
||||
--- minecraft_server\net\minecraft\src\MemoryConnection.java Tue Sep 17 14:00:15 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\MemoryConnection.java Tue Sep 17 14:01:07 2013
|
||||
@@ -11,13 +11,18 @@
|
||||
public class MemoryConnection implements INetworkManager {
|
||||
|
||||
@@ -91,8 +91,8 @@ diff -r -U 3 minecraft_server\net\minecraft\src\MemoryConnection.java minecraft_
|
||||
public void func_74425_a(NetHandler p_74425_1_) {
|
||||
this.field_74440_d = p_74425_1_;
|
||||
diff -r -U 3 minecraft_server\net\minecraft\src\RConThreadClient.java minecraft_server_patched\net\minecraft\src\RConThreadClient.java
|
||||
--- minecraft_server\net\minecraft\src\RConThreadClient.java Sun Jun 30 21:45:26 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\RConThreadClient.java Sun Jun 30 21:45:41 2013
|
||||
--- minecraft_server\net\minecraft\src\RConThreadClient.java Tue Sep 17 14:00:15 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\RConThreadClient.java Tue Sep 17 14:01:07 2013
|
||||
@@ -32,8 +32,8 @@
|
||||
}
|
||||
|
||||
@@ -132,8 +132,8 @@ diff -r -U 3 minecraft_server\net\minecraft\src\RConThreadClient.java minecraft_
|
||||
|
||||
private void func_72654_a(int p_72654_1_, int p_72654_2_, String p_72654_3_) throws IOException {
|
||||
diff -r -U 3 minecraft_server\net\minecraft\src\TcpMasterThread.java minecraft_server_patched\net\minecraft\src\TcpMasterThread.java
|
||||
--- minecraft_server\net\minecraft\src\TcpMasterThread.java Sun Jun 30 21:45:27 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\TcpMasterThread.java Sun Jun 30 21:45:41 2013
|
||||
--- minecraft_server\net\minecraft\src\TcpMasterThread.java Tue Sep 17 14:00:16 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\TcpMasterThread.java Tue Sep 17 14:01:07 2013
|
||||
@@ -11,6 +11,7 @@
|
||||
this.field_74504_a = p_i1395_1_;
|
||||
}
|
||||
@@ -143,8 +143,8 @@ diff -r -U 3 minecraft_server\net\minecraft\src\TcpMasterThread.java minecraft_s
|
||||
try {
|
||||
Thread.sleep(5000L);
|
||||
diff -r -U 3 minecraft_server\net\minecraft\src\ThreadedFileIOBase.java minecraft_server_patched\net\minecraft\src\ThreadedFileIOBase.java
|
||||
--- minecraft_server\net\minecraft\src\ThreadedFileIOBase.java Sun Jun 30 21:45:27 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\ThreadedFileIOBase.java Sun Jun 30 21:45:41 2013
|
||||
--- minecraft_server\net\minecraft\src\ThreadedFileIOBase.java Tue Sep 17 14:00:16 2013
|
||||
+++ minecraft_server_patched\net\minecraft\src\ThreadedFileIOBase.java Tue Sep 17 14:01:07 2013
|
||||
@@ -20,6 +20,7 @@
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
[VERSION]
|
||||
MCPVersion = 8.02
|
||||
ClientVersion = 1.6.1
|
||||
ServerVersion = 1.6.1
|
||||
MCPVersion = 8.09
|
||||
ClientVersion = 1.6.3
|
||||
ServerVersion = 1.6.3
|
||||
Binary file not shown.
@@ -1,12 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/Minecraft/src/Start.java"/>
|
||||
<listEntry value="/Minecraft/lib/net/minecraft/launchwrapper/1.3/launchwrapper-1.3.jar"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="1"/>
|
||||
</listAttribute>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="Start"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="net.minecraft.launchwrapper.Launch"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--version 1.6 --tweakClass cpw.mods.fml.common.launcher.FMLTweaker"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Minecraft"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xincgc -Xmx1024M -Xms1024M"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:Minecraft/jars}"/>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/Minecraft/common/net/minecraft/server/MinecraftServer.java"/>
|
||||
<listEntry value="/Minecraft/src/net/minecraft/server/MinecraftServer.java"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="1"/>
|
||||
</listAttribute>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="net.minecraft.server.MinecraftServer"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="cpw.mods.fml.relauncher.ServerLaunchWrapper"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Minecraft"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xincgc -Xmx1024M -Xms1024M"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:Minecraft/jars}"/>
|
||||
|
||||
@@ -3,9 +3,14 @@
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="lib" path="jars/libraries/org/ow2/asm/asm-all/4.1/asm-all-4.1.jar" sourcepath="jars/libraries/org/ow2/asm/asm-all/4.1/asm-all-4.1-sources.jar"/>
|
||||
<classpathentry kind="lib" path="jars/libraries/org/ow2/asm/asm-debug-all/4.1/asm-debug-all-4.1.jar" sourcepath="jars/libraries/org/ow2/asm/asm-debug-all/4.1/asm-debug-all-4.1-sources.jar"/>
|
||||
<classpathentry kind="lib" path="jars/libraries/net/minecraft/launchwrapper/1.3/launchwrapper-1.3.jar"/>
|
||||
<classpathentry kind="lib" path="jars/versions/1.6/1.6.jar"/>
|
||||
<classpathentry kind="lib" path="jars/versions/1.6.2/1.6.2.jar">
|
||||
<attributes>
|
||||
<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="Minecraft/jars/versions/1.6.2/1.6.2-natives"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="jars/libraries/lzma/lzma/0.0.1/lzma-0.0.1.jar"/>
|
||||
<classpathentry kind="lib" path="jars/libraries/net/sf/jopt-simple/jopt-simple/4.5/jopt-simple-4.5.jar" sourcepath="jars/libraries/net/sf/jopt-simple/jopt-simple/4.5/jopt-simple-4.5-sources.jar"/>
|
||||
<classpathentry kind="lib" path="jars/libraries/com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar"/>
|
||||
<classpathentry kind="lib" path="jars/libraries/com/paulscode/codecwav/20101023/codecwav-20101023.jar"/>
|
||||
@@ -19,19 +24,7 @@
|
||||
<classpathentry kind="lib" path="jars/libraries/commons-io/commons-io/2.4/commons-io-2.4.jar" sourcepath="jars/libraries/commons-io/commons-io/2.4/commons-io-2.4-sources.jar"/>
|
||||
<classpathentry kind="lib" path="jars/libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar" sourcepath="jars/libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0-sources.jar"/>
|
||||
<classpathentry kind="lib" path="jars/libraries/com/google/code/gson/gson/2.2.2/gson-2.2.2.jar" sourcepath="jars/libraries/com/google/code/gson/gson/2.2.2/gson-2.2.2-sources.jar"/>
|
||||
<classpathentry kind="lib" path="jars/libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar" sourcepath="jars/libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5-sources.jar">
|
||||
<attributes>
|
||||
<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="Minecraft/natives"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="jars/libraries/org/lwjgl/lwjgl/lwjgl/2.9.0/lwjgl-2.9.0.jar" sourcepath="jars/libraries/org/lwjgl/lwjgl/lwjgl/2.9.0/lwjgl-2.9.0-sources.jar">
|
||||
<attributes>
|
||||
<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="Minecraft/natives"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="jars/libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.0/lwjgl_util-2.9.0.jar" sourcepath="jars/libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.0/lwjgl_util-2.9.0-sources.jar">
|
||||
<attributes>
|
||||
<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="Minecraft/natives"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="jars/libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar" sourcepath="jars/libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5-sources.jar"/>
|
||||
<classpathentry kind="lib" path="jars/libraries/org/lwjgl/lwjgl/lwjgl/2.9.0/lwjgl-2.9.0.jar" sourcepath="jars/libraries/org/lwjgl/lwjgl/lwjgl/2.9.0/lwjgl-2.9.0-sources.jar"/>
|
||||
<classpathentry kind="lib" path="jars/libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.0/lwjgl_util-2.9.0.jar" sourcepath="jars/libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.0/lwjgl_util-2.9.0-sources.jar"/>
|
||||
</classpath>
|
||||
@@ -30,11 +30,6 @@
|
||||
<type>2</type>
|
||||
<locationURI>MCP_LOC/lib</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>natives</name>
|
||||
<type>2</type>
|
||||
<locationURI>MCP_LOC/jars/libraries/natives</locationURI>
|
||||
</link>
|
||||
</linkedResources>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
@@ -73,15 +68,6 @@
|
||||
<arguments>1.0-name-matches-false-false-*.jar</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>1307293480435</id>
|
||||
<name>jars/bin/natives</name>
|
||||
<type>6</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-*</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
<variableList>
|
||||
<variable>
|
||||
|
||||
+7
-6
@@ -75,7 +75,7 @@ def read_mc_versions(fml_dir, version=None, work_dir=None):
|
||||
mc_info['version'] = version
|
||||
if not 'client_url' in mc_info.keys():
|
||||
mc_info['new_launcher'] = True
|
||||
base_url = 'https://s3.amazonaws.com/Minecraft.Download/versions/%s' % version
|
||||
base_url = 'http://s3.amazonaws.com/Minecraft.Download/versions/%s' % version
|
||||
mc_info['client_url'] = '%s/%s.jar' % (base_url, version)
|
||||
mc_info['json_url'] = '%s/%s.json' % (base_url, version)
|
||||
mc_info['server_url'] = '%s/minecraft_server.%s.jar' % (base_url, version)
|
||||
@@ -506,7 +506,7 @@ def copytree(src, dst, verbose=0, symlinks=False):
|
||||
#==========================================================================
|
||||
# MCP Related Functions
|
||||
#==========================================================================
|
||||
def download_mcp(mcp_dir, fml_dir, version=None):
|
||||
def download_mcp(fml_dir, mcp_dir, version=None):
|
||||
if os.path.isfile(os.path.join(mcp_dir, 'runtime', 'commands.py')):
|
||||
print 'MCP Detected already, not downloading'
|
||||
return True
|
||||
@@ -517,6 +517,7 @@ def download_mcp(mcp_dir, fml_dir, version=None):
|
||||
|
||||
mc_info = read_mc_versions(fml_dir, version=version)
|
||||
|
||||
print('Checking MCP zip (may take time to download)')
|
||||
if not download_file(mc_info['mcp_url'], mc_info['mcp_file'], mc_info['mcp_md5']):
|
||||
sys.exit(1)
|
||||
|
||||
@@ -922,7 +923,7 @@ def decompile_minecraft(fml_dir, mcp_dir, disable_at=False, disable_merge=False,
|
||||
src_dir = os.path.join(mcp_dir, 'src')
|
||||
if os.path.isdir(src_dir):
|
||||
os.chdir(mcp_dir)
|
||||
cleanup(None, False)
|
||||
cleanup(None, False, False)
|
||||
reset_logger()
|
||||
os.chdir(fml_dir)
|
||||
|
||||
@@ -1145,7 +1146,7 @@ def download_libraries(mcp_dir, libraries, natives_dir):
|
||||
# This list should be in the format of the new launcher's version.json file
|
||||
# Under the entry 'libraries'
|
||||
lib_dir = os.path.join(mcp_dir, 'jars', 'libraries')
|
||||
default_url = 'https://s3.amazonaws.com/Minecraft.Download/libraries'
|
||||
default_url = 'http://s3.amazonaws.com/Minecraft.Download/libraries'
|
||||
|
||||
downloads = []
|
||||
failed = False
|
||||
@@ -1238,7 +1239,7 @@ def download_list(list, natives_dir):
|
||||
def download_assets(mcp_dir):
|
||||
from xml.dom.minidom import parse
|
||||
asset_dir = os.path.join(mcp_dir, 'jars', 'assets')
|
||||
base_url = 'https://s3.amazonaws.com/Minecraft.Resources'
|
||||
base_url = 'http://s3.amazonaws.com/Minecraft.Resources'
|
||||
|
||||
print('Gathering assets list from %s' % base_url)
|
||||
|
||||
@@ -1285,7 +1286,7 @@ def download_assets(mcp_dir):
|
||||
|
||||
if failed:
|
||||
print(' Downloading assets failed, please review log for more details')
|
||||
sys.exit(1)
|
||||
|
||||
#==========================================================================
|
||||
# Transformers
|
||||
#==========================================================================
|
||||
|
||||
+4
-3
@@ -1,10 +1,11 @@
|
||||
import os, os.path, sys
|
||||
from optparse import OptionParser
|
||||
|
||||
from fml import setup_fml, finish_setup_fml, apply_fml_patches, setup_mcp, download_mcp
|
||||
|
||||
def fml_main(fml_dir, mcp_dir, gen_conf=True, disable_patches=False, disable_at=False, disable_merge=False, enable_server=False,
|
||||
disable_client=False, disable_rename=False, disable_assets=False, decompile=False):
|
||||
sys.path.append(fml_dir)
|
||||
from fml import download_mcp, setup_mcp, decompile_minecraft, apply_fml_patches, finish_setup_fml
|
||||
print '================ Forge ModLoader Setup Start ==================='
|
||||
download_mcp(fml_dir, mcp_dir)
|
||||
setup_mcp(fml_dir, mcp_dir, gen_conf)
|
||||
@@ -30,7 +31,7 @@ if __name__ == '__main__':
|
||||
parser.add_option('-c', '--no-client', action="store_true", dest='no_client', help='Disable decompilation of server', default=False)
|
||||
parser.add_option('-e', '--no-merge', action="store_true", dest='no_merge', help='Disable merging server code into client', default=False)
|
||||
parser.add_option('-n', '--no-rename', action="store_true", dest='no_rename', help='Disable running updatenames', default=False)
|
||||
parser.add_option('-a', '--no-assets', action="store_true", dest='no_assets', help='Disable downloading of assets folder', default=False)
|
||||
parser.add_option( '--no-assets', action="store_true", dest='no_assets', help='Disable downloading of assets folder', default=False)
|
||||
parser.add_option('-d', '--decompile', action="store_true", dest='decompile', help='Decompile minecraft and apply patches', default=True)
|
||||
options, _ = parser.parse_args()
|
||||
|
||||
@@ -51,5 +52,5 @@ if __name__ == '__main__':
|
||||
fml_main(fml_dir, mcp_dir, disable_patches=options.no_patch,
|
||||
disable_at=options.no_access, disable_merge=options.no_merge,
|
||||
enable_server=options.enable_server, disable_client=options.no_client,
|
||||
disable_rename=options.no_rename, disable_assets=options.assets,
|
||||
disable_rename=options.no_rename, disable_assets=options.no_assets,
|
||||
decompile=options.decompile, gen_conf=False)
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
#!/bin/bash
|
||||
python install.py
|
||||
python install.py "$@"
|
||||
+14
-2
@@ -4,7 +4,7 @@
|
||||
"releaseTime": "{timestamp}",
|
||||
"type": "release",
|
||||
"processArguments": "username_session_version",
|
||||
"minecraftArguments": "--username ${auth_player_name} --session ${auth_session} --version ${version_name} --gameDir ${game_directory} --assetsDir ${game_assets} --tweakClass cpw.mods.fml.common.launcher.FMLTweaker",
|
||||
"minecraftArguments": "--version FML_DEV --tweakClass cpw.mods.fml.common.launcher.FMLTweaker",
|
||||
"minimumLauncherVersion": 2,
|
||||
"libraries": [
|
||||
{
|
||||
@@ -17,6 +17,18 @@
|
||||
"url" : "http://repo.maven.apache.org/maven2",
|
||||
"comment" : "Important for FML, we add this"
|
||||
},
|
||||
{
|
||||
"name": "org.scala-lang:scala-library:2.10.2",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2",
|
||||
"comment" : "Important for FML, we add this"
|
||||
},
|
||||
{
|
||||
"name": "org.scala-lang:scala-compiler:2.10.2",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2",
|
||||
"comment" : "Important for FML, we add this"
|
||||
},
|
||||
{
|
||||
"name": "net.sf.jopt-simple:jopt-simple:4.5",
|
||||
"children" : ["sources"],
|
||||
@@ -121,5 +133,5 @@
|
||||
}
|
||||
}
|
||||
],
|
||||
"mainClass": "net.minecraft.client.main.Main"
|
||||
"mainClass": "net.minecraft.launchwrapper.Launch"
|
||||
}
|
||||
+123
-89
@@ -1,93 +1,127 @@
|
||||
{
|
||||
"id": "FML{version}",
|
||||
"time": "{timestamp}",
|
||||
"releaseTime": "{timestamp}",
|
||||
"type": "release",
|
||||
"processArguments": "username_session_version",
|
||||
"minecraftArguments": "--username ${auth_player_name} --session ${auth_session} --version ${version_name} --gameDir ${game_directory} --assetsDir ${game_assets} --tweakClass cpw.mods.fml.common.launcher.FMLTweaker",
|
||||
"minimumLauncherVersion": 2,
|
||||
"libraries": [
|
||||
{
|
||||
"name": "cpw.mods:fml:{version}",
|
||||
"devdl" : "false"
|
||||
},
|
||||
{
|
||||
"name": "net.minecraft:launchwrapper:1.3"
|
||||
},
|
||||
{
|
||||
"name": "net.sf.jopt-simple:jopt-simple:4.5"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:codecjorbis:20101023"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:codecwav:20101023"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:libraryjavasound:20101123"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:librarylwjglopenal:20100824"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:soundsystem:20120107"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl:2.9.0"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.0"
|
||||
},
|
||||
{
|
||||
"name": "argo:argo:2.25_fixed"
|
||||
},
|
||||
{
|
||||
"name": "org.bouncycastle:bcprov-jdk15on:1.47"
|
||||
},
|
||||
{
|
||||
"name": "com.google.guava:guava:14.0"
|
||||
},
|
||||
{
|
||||
"name": "org.apache.commons:commons-lang3:3.1"
|
||||
},
|
||||
{
|
||||
"name": "commons-io:commons-io:2.4"
|
||||
},
|
||||
{
|
||||
"name": "net.java.jinput:jinput:2.0.5"
|
||||
},
|
||||
{
|
||||
"name": "net.java.jutils:jutils:1.0.0"
|
||||
},
|
||||
{
|
||||
"name": "com.google.code.gson:gson:2.2.2"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.0",
|
||||
"natives": {
|
||||
"linux": "natives-linux",
|
||||
"windows": "natives-windows",
|
||||
"osx": "natives-osx"
|
||||
"install": {
|
||||
"profileName": "FML",
|
||||
"target":"FML@version@",
|
||||
"path":"cpw.mods:fml:@version@",
|
||||
"version":"FML @version@",
|
||||
"filePath":"@universal_jar@",
|
||||
"welcome":"Welcome to the simple FML installer.",
|
||||
"minecraft":"@minecraft_version@",
|
||||
"logo":"/big_logo.png"
|
||||
},
|
||||
"versionInfo": {
|
||||
"id": "FML@version@",
|
||||
"time": "@timestamp@",
|
||||
"releaseTime": "1960-01-01T00:00:00-0700",
|
||||
"type": "release",
|
||||
"processArguments": "username_session_version",
|
||||
"minecraftArguments": "--username ${auth_player_name} --session ${auth_session} --version ${version_name} --gameDir ${game_directory} --assetsDir ${game_assets} --tweakClass cpw.mods.fml.common.launcher.FMLTweaker",
|
||||
"minimumLauncherVersion": 2,
|
||||
"libraries": [
|
||||
{
|
||||
"name": "cpw.mods:fml:@version@",
|
||||
"url": "http://files.minecraftforge.net/maven/"
|
||||
},
|
||||
"extract": {
|
||||
"exclude": [
|
||||
"META-INF/"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "net.java.jinput:jinput-platform:2.0.5",
|
||||
"natives": {
|
||||
"linux": "natives-linux",
|
||||
"windows": "natives-windows",
|
||||
"osx": "natives-osx"
|
||||
{
|
||||
"name": "net.minecraft:launchwrapper:1.3",
|
||||
"serverreq":true
|
||||
},
|
||||
"extract": {
|
||||
"exclude": [
|
||||
"META-INF/"
|
||||
]
|
||||
{
|
||||
"name": "org.scala-lang:scala-library:2.10.2",
|
||||
"url" : "http://repo.maven.apache.org/maven2/",
|
||||
"comment" : "Important for FML, we add this",
|
||||
"serverreq":true
|
||||
},
|
||||
{
|
||||
"name": "org.scala-lang:scala-compiler:2.10.2",
|
||||
"url" : "http://repo.maven.apache.org/maven2/",
|
||||
"comment" : "Important for FML, we add this",
|
||||
"serverreq":true
|
||||
},
|
||||
{
|
||||
"name": "org.ow2.asm:asm-all:4.1",
|
||||
"serverreq":true
|
||||
},
|
||||
{
|
||||
"name": "net.sf.jopt-simple:jopt-simple:4.5",
|
||||
"serverreq":true
|
||||
},
|
||||
{
|
||||
"name": "lzma:lzma:0.0.1",
|
||||
"serverreq":true
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:codecjorbis:20101023"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:codecwav:20101023"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:libraryjavasound:20101123"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:librarylwjglopenal:20100824"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:soundsystem:20120107"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl:2.9.0"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.0"
|
||||
},
|
||||
{
|
||||
"name": "argo:argo:2.25_fixed"
|
||||
},
|
||||
{
|
||||
"name": "org.bouncycastle:bcprov-jdk15on:1.47"
|
||||
},
|
||||
{
|
||||
"name": "com.google.guava:guava:14.0"
|
||||
},
|
||||
{
|
||||
"name": "org.apache.commons:commons-lang3:3.1"
|
||||
},
|
||||
{
|
||||
"name": "commons-io:commons-io:2.4"
|
||||
},
|
||||
{
|
||||
"name": "net.java.jinput:jinput:2.0.5"
|
||||
},
|
||||
{
|
||||
"name": "net.java.jutils:jutils:1.0.0"
|
||||
},
|
||||
{
|
||||
"name": "com.google.code.gson:gson:2.2.2"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.0",
|
||||
"natives": {
|
||||
"linux": "natives-linux",
|
||||
"windows": "natives-windows",
|
||||
"osx": "natives-osx"
|
||||
},
|
||||
"extract": {
|
||||
"exclude": [
|
||||
"META-INF/"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "net.java.jinput:jinput-platform:2.0.5",
|
||||
"natives": {
|
||||
"linux": "natives-linux",
|
||||
"windows": "natives-windows",
|
||||
"osx": "natives-osx"
|
||||
},
|
||||
"extract": {
|
||||
"exclude": [
|
||||
"META-INF/"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"mainClass": "net.minecraft.client.main.Main"
|
||||
}
|
||||
],
|
||||
"mainClass": "net.minecraft.launchwrapper.Launch"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
{
|
||||
"id": "FML{version}",
|
||||
"time": "{timestamp}",
|
||||
"releaseTime": "{timestamp}",
|
||||
"type": "release",
|
||||
"processArguments": "username_session_version",
|
||||
"minecraftArguments": "--version FML_DEV --tweakClass cpw.mods.fml.common.launcher.FMLTweaker",
|
||||
"minimumLauncherVersion": 2,
|
||||
"libraries": [
|
||||
{
|
||||
"name": "net.minecraft:launchwrapper:1.3",
|
||||
"comment" : "Important for FML, we add this"
|
||||
},
|
||||
{
|
||||
"name": "org.ow2.asm:asm-debug-all:4.1",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2",
|
||||
"comment" : "Important for FML, we add this"
|
||||
},
|
||||
{
|
||||
"name": "org.scala-lang:scala-library:2.10.2",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2",
|
||||
"comment" : "Important for FML, we add this"
|
||||
},
|
||||
{
|
||||
"name": "org.scala-lang:scala-compiler:2.10.2",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2",
|
||||
"comment" : "Important for FML, we add this"
|
||||
},
|
||||
{
|
||||
"name": "net.sf.jopt-simple:jopt-simple:4.5",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "lzma:lzma:0.0.1"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:codecjorbis:20101023"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:codecwav:20101023"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:libraryjavasound:20101123"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:librarylwjglopenal:20100824"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:soundsystem:20120107"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl:2.9.0",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.0",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "argo:argo:2.25_fixed"
|
||||
},
|
||||
{
|
||||
"name": "net.sourceforge.argo:argo:2.25",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2",
|
||||
"comment" : "grumble grumble grumble, y u no use proper version/artifact id grumble"
|
||||
},
|
||||
{
|
||||
"name": "org.bouncycastle:bcprov-jdk15on:1.47",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "com.google.guava:guava:14.0",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "org.apache.commons:commons-lang3:3.1",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "commons-io:commons-io:2.4",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "net.java.jinput:jinput:2.0.5",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "net.java.jutils:jutils:1.0.0",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "com.google.code.gson:gson:2.2.2",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.0",
|
||||
"natives": {
|
||||
"linux": "natives-linux",
|
||||
"windows": "natives-windows",
|
||||
"osx": "natives-osx"
|
||||
},
|
||||
"extract": {
|
||||
"exclude": [
|
||||
"META-INF/"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "net.java.jinput:jinput-platform:2.0.5",
|
||||
"natives": {
|
||||
"linux": "natives-linux",
|
||||
"windows": "natives-windows",
|
||||
"osx": "natives-osx"
|
||||
},
|
||||
"extract": {
|
||||
"exclude": [
|
||||
"META-INF/"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"mainClass": "net.minecraft.launchwrapper.Launch"
|
||||
}
|
||||
@@ -0,0 +1,220 @@
|
||||
{
|
||||
"install": {
|
||||
"profileName": "FML",
|
||||
"target":"@minecraft_version@-FML@version@",
|
||||
"path":"cpw.mods:fml:@version@",
|
||||
"version":"FML @version@",
|
||||
"filePath":"@universal_jar@",
|
||||
"welcome":"Welcome to the simple FML installer.",
|
||||
"minecraft":"@minecraft_version@",
|
||||
"mirrorList" : "http://files.minecraftforge.net/mirror-brand.list",
|
||||
"logo":"/big_logo.png"
|
||||
},
|
||||
"versionInfo": {
|
||||
"id": "@minecraft_version@-FML@version@",
|
||||
"time": "@timestamp@",
|
||||
"releaseTime": "1960-01-01T00:00:00-0700",
|
||||
"type": "release",
|
||||
"processArguments": "username_session_version",
|
||||
"minecraftArguments": "--username ${auth_player_name} --session ${auth_session} --version ${version_name} --gameDir ${game_directory} --assetsDir ${game_assets} --tweakClass cpw.mods.fml.common.launcher.FMLTweaker",
|
||||
"minimumLauncherVersion": 4,
|
||||
"libraries": [
|
||||
{
|
||||
"name": "cpw.mods:fml:@version@",
|
||||
"url": "http://files.minecraftforge.net/maven/"
|
||||
},
|
||||
{
|
||||
"name": "net.minecraft:launchwrapper:1.3",
|
||||
"serverreq":true
|
||||
},
|
||||
{
|
||||
"name": "org.ow2.asm:asm-all:4.1",
|
||||
"serverreq":true
|
||||
},
|
||||
{
|
||||
"name": "org.scala-lang:scala-library:2.10.2",
|
||||
"url" : "http://files.minecraftforge.net/maven/",
|
||||
"checksums" : [ "6ba65d12cd09d441083262d6f73d2257fec7c663", "dffc88e804861c9eaba39283757000b6558ea573" ],
|
||||
"comment" : "Important for FML, we add this",
|
||||
"serverreq":true,
|
||||
"clientreq":true
|
||||
},
|
||||
{
|
||||
"name": "org.scala-lang:scala-compiler:2.10.2",
|
||||
"url" : "http://files.minecraftforge.net/maven/",
|
||||
"checksums" : [ "64c8b1380cc53d6850823d6e4e7ae984aa44ef9c", "40281b3ffc69fb385953522c843363ccaf71ba89" ],
|
||||
"comment" : "Important for FML, we add this",
|
||||
"serverreq":true,
|
||||
"clientreq":true
|
||||
},
|
||||
{
|
||||
"name": "net.sf.jopt-simple:jopt-simple:4.5",
|
||||
"serverreq":true
|
||||
},
|
||||
{
|
||||
"name": "lzma:lzma:0.0.1",
|
||||
"serverreq":true
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:codecjorbis:20101023"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:codecwav:20101023"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:libraryjavasound:20101123"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:librarylwjglopenal:20100824"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:soundsystem:20120107"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl:2.9.0"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.0"
|
||||
},
|
||||
{
|
||||
"name": "argo:argo:2.25_fixed"
|
||||
},
|
||||
{
|
||||
"name": "org.bouncycastle:bcprov-jdk15on:1.47"
|
||||
},
|
||||
{
|
||||
"name": "com.google.guava:guava:14.0"
|
||||
},
|
||||
{
|
||||
"name": "org.apache.commons:commons-lang3:3.1"
|
||||
},
|
||||
{
|
||||
"name": "commons-io:commons-io:2.4"
|
||||
},
|
||||
{
|
||||
"name": "net.java.jinput:jinput:2.0.5"
|
||||
},
|
||||
{
|
||||
"name": "net.java.jutils:jutils:1.0.0"
|
||||
},
|
||||
{
|
||||
"name": "com.google.code.gson:gson:2.2.2"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl:2.9.0",
|
||||
"rules": [
|
||||
{
|
||||
"action": "allow"
|
||||
},
|
||||
{
|
||||
"action": "disallow",
|
||||
"os": {
|
||||
"name": "osx",
|
||||
"version": "^10\\.5\\.\\d$"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.0",
|
||||
"rules": [
|
||||
{
|
||||
"action": "allow"
|
||||
},
|
||||
{
|
||||
"action": "disallow",
|
||||
"os": {
|
||||
"name": "osx",
|
||||
"version": "^10\\.5\\.\\d$"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.0",
|
||||
"rules": [
|
||||
{
|
||||
"action": "allow"
|
||||
},
|
||||
{
|
||||
"action": "disallow",
|
||||
"os": {
|
||||
"name": "osx",
|
||||
"version": "^10\\.5\\.\\d$"
|
||||
}
|
||||
}
|
||||
],
|
||||
"natives": {
|
||||
"linux": "natives-linux",
|
||||
"windows": "natives-windows",
|
||||
"osx": "natives-osx"
|
||||
},
|
||||
"extract": {
|
||||
"exclude": [
|
||||
"META-INF/"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl:2.9.1-nightly-20130708-debug3",
|
||||
"rules": [
|
||||
{
|
||||
"action": "allow",
|
||||
"os": {
|
||||
"name": "osx",
|
||||
"version": "^10\\.5\\.\\d$"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.1-nightly-20130708-debug3",
|
||||
"rules": [
|
||||
{
|
||||
"action": "allow",
|
||||
"os": {
|
||||
"name": "osx",
|
||||
"version": "^10\\.5\\.\\d$"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20130708-debug3",
|
||||
"rules": [
|
||||
{
|
||||
"action": "allow",
|
||||
"os": {
|
||||
"name": "osx",
|
||||
"version": "^10\\.5\\.\\d$"
|
||||
}
|
||||
}
|
||||
],
|
||||
"natives": {
|
||||
"linux": "natives-linux",
|
||||
"windows": "natives-windows",
|
||||
"osx": "natives-osx"
|
||||
},
|
||||
"extract": {
|
||||
"exclude": [
|
||||
"META-INF/"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "net.java.jinput:jinput-platform:2.0.5",
|
||||
"natives": {
|
||||
"linux": "natives-linux",
|
||||
"windows": "natives-windows",
|
||||
"osx": "natives-osx"
|
||||
},
|
||||
"extract": {
|
||||
"exclude": [
|
||||
"META-INF/"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"mainClass": "net.minecraft.launchwrapper.Launch"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
{
|
||||
"id": "FML{version}",
|
||||
"time": "{timestamp}",
|
||||
"releaseTime": "{timestamp}",
|
||||
"type": "release",
|
||||
"processArguments": "username_session_version",
|
||||
"minecraftArguments": "--version FML_DEV --tweakClass cpw.mods.fml.common.launcher.FMLTweaker",
|
||||
"minimumLauncherVersion": 4,
|
||||
"libraries": [
|
||||
{
|
||||
"name": "net.minecraft:launchwrapper:1.7",
|
||||
"comment" : "Important for FML, we add this"
|
||||
},
|
||||
{
|
||||
"name": "org.ow2.asm:asm-debug-all:4.1",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2",
|
||||
"comment" : "Important for FML, we add this"
|
||||
},
|
||||
{
|
||||
"name": "org.scala-lang:scala-library:2.10.2",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2",
|
||||
"comment" : "Important for FML, we add this"
|
||||
},
|
||||
{
|
||||
"name": "org.scala-lang:scala-compiler:2.10.2",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2",
|
||||
"comment" : "Important for FML, we add this"
|
||||
},
|
||||
{
|
||||
"name": "net.sf.jopt-simple:jopt-simple:4.5",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "lzma:lzma:0.0.1"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:codecjorbis:20101023"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:codecwav:20101023"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:libraryjavasound:20101123"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:librarylwjglopenal:20100824"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:soundsystem:20120107"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl:2.9.0",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.0",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "argo:argo:2.25_fixed"
|
||||
},
|
||||
{
|
||||
"name": "net.sourceforge.argo:argo:2.25",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2",
|
||||
"comment" : "grumble grumble grumble, y u no use proper version/artifact id grumble"
|
||||
},
|
||||
{
|
||||
"name": "org.bouncycastle:bcprov-jdk15on:1.47",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "com.google.guava:guava:14.0",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "org.apache.commons:commons-lang3:3.1",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "commons-io:commons-io:2.4",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "net.java.jinput:jinput:2.0.5",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "net.java.jutils:jutils:1.0.0",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "com.google.code.gson:gson:2.2.2",
|
||||
"children" : ["sources"],
|
||||
"url" : "http://repo.maven.apache.org/maven2"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.0",
|
||||
"natives": {
|
||||
"linux": "natives-linux",
|
||||
"windows": "natives-windows",
|
||||
"osx": "natives-osx"
|
||||
},
|
||||
"extract": {
|
||||
"exclude": [
|
||||
"META-INF/"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "net.java.jinput:jinput-platform:2.0.5",
|
||||
"natives": {
|
||||
"linux": "natives-linux",
|
||||
"windows": "natives-windows",
|
||||
"osx": "natives-osx"
|
||||
},
|
||||
"extract": {
|
||||
"exclude": [
|
||||
"META-INF/"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"mainClass": "net.minecraft.launchwrapper.Launch"
|
||||
}
|
||||
@@ -0,0 +1,214 @@
|
||||
{
|
||||
"install": {
|
||||
"profileName": "FML",
|
||||
"target":"@minecraft_version@-FML@version@",
|
||||
"path":"cpw.mods:fml:@version@",
|
||||
"version":"FML @version@",
|
||||
"filePath":"@universal_jar@",
|
||||
"welcome":"Welcome to the simple FML installer.",
|
||||
"minecraft":"@minecraft_version@",
|
||||
"mirrorList" : "http://files.minecraftforge.net/mirror-brand.list",
|
||||
"logo":"/big_logo.png"
|
||||
},
|
||||
"versionInfo": {
|
||||
"id": "@minecraft_version@-FML@version@",
|
||||
"time": "@timestamp@",
|
||||
"releaseTime": "1960-01-01T00:00:00-0700",
|
||||
"type": "release",
|
||||
"processArguments": "username_session_version",
|
||||
"minecraftArguments": "--username ${auth_player_name} --session ${auth_session} --version ${version_name} --gameDir ${game_directory} --assetsDir ${game_assets} --tweakClass cpw.mods.fml.common.launcher.FMLTweaker",
|
||||
"minimumLauncherVersion": 4,
|
||||
"libraries": [
|
||||
{
|
||||
"name": "cpw.mods:fml:@version@",
|
||||
"url": "http://files.minecraftforge.net/maven/"
|
||||
},
|
||||
{
|
||||
"name": "net.minecraft:launchwrapper:1.7",
|
||||
"serverreq":true
|
||||
},
|
||||
{
|
||||
"name": "org.ow2.asm:asm-all:4.1",
|
||||
"serverreq":true
|
||||
},
|
||||
{
|
||||
"name": "org.scala-lang:scala-library:2.10.2",
|
||||
"url" : "http://files.minecraftforge.net/maven/",
|
||||
"checksums" : [ "6ba65d12cd09d441083262d6f73d2257fec7c663", "dffc88e804861c9eaba39283757000b6558ea573" ],
|
||||
"comment" : "Important for FML, we add this",
|
||||
"serverreq":true,
|
||||
"clientreq":true
|
||||
},
|
||||
{
|
||||
"name": "org.scala-lang:scala-compiler:2.10.2",
|
||||
"url" : "http://files.minecraftforge.net/maven/",
|
||||
"checksums" : [ "64c8b1380cc53d6850823d6e4e7ae984aa44ef9c", "40281b3ffc69fb385953522c843363ccaf71ba89" ],
|
||||
"comment" : "Important for FML, we add this",
|
||||
"serverreq":true,
|
||||
"clientreq":true
|
||||
},
|
||||
{
|
||||
"name": "lzma:lzma:0.0.1",
|
||||
"serverreq":true
|
||||
},
|
||||
{
|
||||
"name": "net.sf.jopt-simple:jopt-simple:4.5",
|
||||
"serverreq":true
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:codecjorbis:20101023"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:codecwav:20101023"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:libraryjavasound:20101123"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:librarylwjglopenal:20100824"
|
||||
},
|
||||
{
|
||||
"name": "com.paulscode:soundsystem:20120107"
|
||||
},
|
||||
{
|
||||
"name": "argo:argo:2.25_fixed"
|
||||
},
|
||||
{
|
||||
"name": "org.bouncycastle:bcprov-jdk15on:1.47"
|
||||
},
|
||||
{
|
||||
"name": "com.google.guava:guava:14.0"
|
||||
},
|
||||
{
|
||||
"name": "org.apache.commons:commons-lang3:3.1"
|
||||
},
|
||||
{
|
||||
"name": "commons-io:commons-io:2.4"
|
||||
},
|
||||
{
|
||||
"name": "net.java.jinput:jinput:2.0.5"
|
||||
},
|
||||
{
|
||||
"name": "net.java.jutils:jutils:1.0.0"
|
||||
},
|
||||
{
|
||||
"name": "com.google.code.gson:gson:2.2.2"
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl:2.9.0",
|
||||
"rules": [
|
||||
{
|
||||
"action": "allow"
|
||||
},
|
||||
{
|
||||
"action": "disallow",
|
||||
"os": {
|
||||
"name": "osx",
|
||||
"version": "^10\\.5\\.\\d$"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.0",
|
||||
"rules": [
|
||||
{
|
||||
"action": "allow"
|
||||
},
|
||||
{
|
||||
"action": "disallow",
|
||||
"os": {
|
||||
"name": "osx",
|
||||
"version": "^10\\.5\\.\\d$"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.0",
|
||||
"rules": [
|
||||
{
|
||||
"action": "allow"
|
||||
},
|
||||
{
|
||||
"action": "disallow",
|
||||
"os": {
|
||||
"name": "osx",
|
||||
"version": "^10\\.5\\.\\d$"
|
||||
}
|
||||
}
|
||||
],
|
||||
"natives": {
|
||||
"linux": "natives-linux",
|
||||
"windows": "natives-windows",
|
||||
"osx": "natives-osx"
|
||||
},
|
||||
"extract": {
|
||||
"exclude": [
|
||||
"META-INF/"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl:2.9.1-nightly-20130708-debug3",
|
||||
"rules": [
|
||||
{
|
||||
"action": "allow",
|
||||
"os": {
|
||||
"name": "osx",
|
||||
"version": "^10\\.5\\.\\d$"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.1-nightly-20130708-debug3",
|
||||
"rules": [
|
||||
{
|
||||
"action": "allow",
|
||||
"os": {
|
||||
"name": "osx",
|
||||
"version": "^10\\.5\\.\\d$"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20130708-debug3",
|
||||
"rules": [
|
||||
{
|
||||
"action": "allow",
|
||||
"os": {
|
||||
"name": "osx",
|
||||
"version": "^10\\.5\\.\\d$"
|
||||
}
|
||||
}
|
||||
],
|
||||
"natives": {
|
||||
"linux": "natives-linux",
|
||||
"windows": "natives-windows",
|
||||
"osx": "natives-osx"
|
||||
},
|
||||
"extract": {
|
||||
"exclude": [
|
||||
"META-INF/"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "net.java.jinput:jinput-platform:2.0.5",
|
||||
"natives": {
|
||||
"linux": "natives-linux",
|
||||
"windows": "natives-windows",
|
||||
"osx": "natives-osx"
|
||||
},
|
||||
"extract": {
|
||||
"exclude": [
|
||||
"META-INF/"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"mainClass": "net.minecraft.launchwrapper.Launch"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 6.3 KiB |
Binary file not shown.
+17
-3
@@ -1,5 +1,5 @@
|
||||
[default]
|
||||
current_ver = 1.6.1
|
||||
current_ver = 1.6.3
|
||||
base_url = http://s3.amazonaws.com/MinecraftDownload/
|
||||
libraries = lwjgl.jar lwjgl_util.jar jinput.jar
|
||||
natives = windows_natives.jar macosx_natives.jar linux_natives.jar
|
||||
@@ -104,6 +104,20 @@ mcp_md5 = 39da81bbb4d73b3f5e2d1f8f5682cdb9
|
||||
[1.6.1]
|
||||
client_md5 = 3c56fb4b77b1ca37dde69b5eb896fc4d
|
||||
server_md5 = ff8f81970a5955737c356b534d3aee96
|
||||
mcp_ver = 8.02
|
||||
mcp_ver = 8.03
|
||||
mcp_url = http://mcp.ocean-labs.de/files/archive/mcp803.zip
|
||||
mcp_md5 = 7810c2fba33e15889685b21ac8dc66cf
|
||||
|
||||
[1.6.2]
|
||||
client_md5 = 1d43cdba8b9752d7f557ab7d3e365964
|
||||
server_md5 = 39df9f29e6904ea7b351ffb4fe949881
|
||||
mcp_ver = 8.04
|
||||
mcp_url = http://mcp.ocean-labs.de/files/archive/mcp804.zip
|
||||
mcp_md5 = ebcecfa00aae07548e67787044410a11
|
||||
|
||||
[1.6.3]
|
||||
client_md5 = 233effe2110d40a0519cf1489e4ccb1c
|
||||
server_md5 = 8ed981ab6030412f586bfe38ff0aaa82
|
||||
mcp_ver = 8.09
|
||||
mcp_url =
|
||||
mcp_md5 = 39da81bbb4d73b3f5e2d1f8f5682cdb9
|
||||
mcp_md5 =
|
||||
@@ -12,7 +12,7 @@
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.awt.image.BufferedImage;
|
||||
@@ -129,6 +134,8 @@
|
||||
@@ -130,6 +135,8 @@
|
||||
import org.lwjgl.opengl.PixelFormat;
|
||||
import org.lwjgl.util.glu.GLU;
|
||||
|
||||
@@ -21,24 +21,24 @@
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class Minecraft implements IPlayerUsage
|
||||
{
|
||||
@@ -364,6 +371,8 @@
|
||||
@@ -366,6 +373,8 @@
|
||||
this.func_71357_I();
|
||||
this.field_71466_p = new FontRenderer(this.field_71474_y, new ResourceLocation("textures/font/ascii.png"), this.field_71446_o, false);
|
||||
|
||||
+ FMLClientHandler.instance().beginMinecraftLoading(this);
|
||||
+ FMLClientHandler.instance().beginMinecraftLoading(this, this.field_110449_ao, this.field_110451_am);
|
||||
+
|
||||
if (this.field_71474_y.field_74363_ab != null)
|
||||
{
|
||||
this.field_71466_p.func_78264_a(this.field_135017_as.func_135042_a());
|
||||
@@ -396,6 +405,7 @@
|
||||
this.field_71446_o.func_130088_a(TextureMap.field_110576_c, new TextureMap(1, "textures/items/"));
|
||||
@@ -400,6 +409,7 @@
|
||||
this.field_71446_o.func_130088_a(TextureMap.field_110576_c, new TextureMap(1, "textures/items"));
|
||||
GL11.glViewport(0, 0, this.field_71443_c, this.field_71440_d);
|
||||
this.field_71452_i = new EffectRenderer(this.field_71441_e, this.field_71446_o);
|
||||
+ FMLClientHandler.instance().finishMinecraftLoading();
|
||||
this.func_71361_d("Post startup");
|
||||
this.field_71456_v = new GuiIngame(this);
|
||||
|
||||
@@ -414,6 +424,7 @@
|
||||
@@ -418,6 +428,7 @@
|
||||
{
|
||||
this.func_71352_k();
|
||||
}
|
||||
@@ -46,7 +46,7 @@
|
||||
}
|
||||
|
||||
public void func_110436_a()
|
||||
@@ -729,6 +740,7 @@
|
||||
@@ -733,6 +744,7 @@
|
||||
{
|
||||
this.func_71405_e();
|
||||
}
|
||||
@@ -54,7 +54,7 @@
|
||||
}
|
||||
|
||||
private void func_71411_J()
|
||||
@@ -797,9 +809,11 @@
|
||||
@@ -801,9 +813,11 @@
|
||||
|
||||
if (!this.field_71454_w)
|
||||
{
|
||||
@@ -66,7 +66,7 @@
|
||||
}
|
||||
|
||||
GL11.glFlush();
|
||||
@@ -1321,10 +1335,14 @@
|
||||
@@ -1325,10 +1339,14 @@
|
||||
|
||||
public void func_71407_l()
|
||||
{
|
||||
@@ -81,7 +81,7 @@
|
||||
|
||||
this.field_71424_I.func_76320_a("stats");
|
||||
this.field_71413_E.func_77449_e();
|
||||
@@ -1775,6 +1793,8 @@
|
||||
@@ -1785,6 +1803,8 @@
|
||||
this.field_71453_ak.func_74428_b();
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
this.field_71424_I.func_76319_b();
|
||||
this.field_71423_H = func_71386_F();
|
||||
}
|
||||
@@ -1798,8 +1818,27 @@
|
||||
@@ -1808,8 +1828,27 @@
|
||||
}
|
||||
|
||||
this.field_71413_E.func_77450_a(StatList.field_75936_f, 1);
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/multiplayer/NetClientHandler.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/multiplayer/NetClientHandler.java
|
||||
@@ -1,5 +1,6 @@
|
||||
@@ -1,6 +1,8 @@
|
||||
package net.minecraft.client.multiplayer;
|
||||
|
||||
import com.google.common.base.Charsets;
|
||||
+
|
||||
+import cpw.mods.fml.common.network.FMLNetworkHandler;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.BufferedReader;
|
||||
@@ -201,11 +202,14 @@
|
||||
@@ -205,11 +207,14 @@
|
||||
private GuiScreen field_98183_l;
|
||||
Random field_72557_e = new Random();
|
||||
|
||||
@@ -22,7 +24,7 @@
|
||||
}
|
||||
|
||||
public NetClientHandler(Minecraft p_i1177_1_, String p_i1177_2_, int p_i1177_3_, GuiScreen p_i1177_4_) throws IOException
|
||||
@@ -214,6 +218,7 @@
|
||||
@@ -218,6 +223,7 @@
|
||||
this.field_98183_l = p_i1177_4_;
|
||||
Socket socket = new Socket(InetAddress.getByName(p_i1177_2_), p_i1177_3_);
|
||||
this.field_72555_g = new TcpConnection(p_i1177_1_.func_98033_al(), socket, "Client", this);
|
||||
@@ -30,7 +32,7 @@
|
||||
}
|
||||
|
||||
public NetClientHandler(Minecraft p_i1178_1_, IntegratedServer p_i1178_2_) throws IOException
|
||||
@@ -221,6 +226,7 @@
|
||||
@@ -225,6 +231,7 @@
|
||||
this.field_72563_h = p_i1178_1_;
|
||||
this.field_72555_g = new MemoryConnection(p_i1178_1_.func_98033_al(), this);
|
||||
p_i1178_2_.func_71343_a().func_71754_a((MemoryConnection)this.field_72555_g, p_i1178_1_.func_110432_I().func_111285_a());
|
||||
@@ -38,7 +40,7 @@
|
||||
}
|
||||
|
||||
public void func_72547_c()
|
||||
@@ -292,6 +298,7 @@
|
||||
@@ -296,6 +303,7 @@
|
||||
|
||||
public void func_72513_a(Packet252SharedKey p_72513_1_)
|
||||
{
|
||||
@@ -46,15 +48,15 @@
|
||||
this.func_72552_c(new Packet205ClientCommand(0));
|
||||
}
|
||||
|
||||
@@ -307,6 +314,7 @@
|
||||
@@ -311,6 +319,7 @@
|
||||
this.field_72563_h.field_71439_g.field_70157_k = p_72455_1_.field_73561_a;
|
||||
this.field_72556_d = p_72455_1_.field_73562_h;
|
||||
this.field_72563_h.field_71442_b.func_78746_a(p_72455_1_.field_73557_d);
|
||||
+ FMLNetworkHandler.onConnectionEstablishedToServer(this, field_72555_g, p_72455_1_);
|
||||
this.field_72563_h.field_71474_y.func_82879_c();
|
||||
this.field_72555_g.func_74429_a(new Packet250CustomPayload("MC|Brand", ClientBrandRetriever.getClientModName().getBytes(Charsets.UTF_8)));
|
||||
}
|
||||
|
||||
@@ -760,6 +768,7 @@
|
||||
@@ -765,6 +774,7 @@
|
||||
{
|
||||
this.field_72555_g.func_74429_a(p_72546_1_);
|
||||
this.field_72555_g.func_74423_d();
|
||||
@@ -62,7 +64,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -799,6 +808,7 @@
|
||||
@@ -804,6 +814,7 @@
|
||||
|
||||
public void func_72481_a(Packet3Chat p_72481_1_)
|
||||
{
|
||||
@@ -70,7 +72,7 @@
|
||||
this.field_72563_h.field_71456_v.func_73827_b().func_73765_a(ChatMessageComponent.func_111078_c(p_72481_1_.field_73476_b).func_111068_a(true));
|
||||
}
|
||||
|
||||
@@ -1379,6 +1389,11 @@
|
||||
@@ -1403,6 +1414,11 @@
|
||||
|
||||
public void func_72494_a(Packet131MapData p_72494_1_)
|
||||
{
|
||||
@@ -82,7 +84,7 @@
|
||||
if (p_72494_1_.field_73438_a == Item.field_77744_bd.field_77779_bT)
|
||||
{
|
||||
ItemMap.func_77874_a(p_72494_1_.field_73436_b, this.field_72563_h.field_71441_e).func_76192_a(p_72494_1_.field_73437_c);
|
||||
@@ -1490,6 +1505,11 @@
|
||||
@@ -1514,6 +1530,11 @@
|
||||
|
||||
public void func_72501_a(Packet250CustomPayload p_72501_1_)
|
||||
{
|
||||
@@ -94,7 +96,7 @@
|
||||
if ("MC|TrList".equals(p_72501_1_.field_73630_a))
|
||||
{
|
||||
DataInputStream datainputstream = new DataInputStream(new ByteArrayInputStream(p_72501_1_.field_73629_c));
|
||||
@@ -1670,4 +1690,20 @@
|
||||
@@ -1707,4 +1728,20 @@
|
||||
{
|
||||
return this.field_72555_g;
|
||||
}
|
||||
|
||||
@@ -9,4 +9,4 @@
|
||||
-@SideOnly(Side.CLIENT)
|
||||
public interface IBossDisplayData
|
||||
{
|
||||
float func_70667_aM();
|
||||
float func_110138_aP();
|
||||
@@ -8,7 +8,7 @@
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.util.Collection;
|
||||
@@ -183,6 +185,7 @@
|
||||
@@ -181,6 +183,7 @@
|
||||
|
||||
public void func_70071_h_()
|
||||
{
|
||||
@@ -16,7 +16,7 @@
|
||||
if (this.field_71074_e != null)
|
||||
{
|
||||
ItemStack itemstack = this.field_71071_by.func_70448_g();
|
||||
@@ -306,6 +309,7 @@
|
||||
@@ -304,6 +307,7 @@
|
||||
{
|
||||
this.field_71100_bB.func_75118_a(this);
|
||||
}
|
||||
@@ -24,7 +24,7 @@
|
||||
}
|
||||
|
||||
public int func_82145_z()
|
||||
@@ -1954,4 +1958,9 @@
|
||||
@@ -1906,4 +1910,9 @@
|
||||
{
|
||||
return this.func_70096_w().func_111145_d(17);
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
{
|
||||
this.func_72527_a("Took too long to log in");
|
||||
}
|
||||
@@ -148,11 +152,18 @@
|
||||
@@ -155,11 +159,18 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
if (s != null)
|
||||
{
|
||||
@@ -270,4 +281,22 @@
|
||||
@@ -282,4 +293,22 @@
|
||||
{
|
||||
return p_72531_0_.field_72544_i = p_72531_1_;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
import net.minecraft.crash.CrashReport;
|
||||
import net.minecraft.crash.CrashReportCategory;
|
||||
import net.minecraft.entity.Entity;
|
||||
@@ -34,6 +36,7 @@
|
||||
@@ -36,6 +38,7 @@
|
||||
import net.minecraft.network.packet.Packet108EnchantItem;
|
||||
import net.minecraft.network.packet.Packet10Flying;
|
||||
import net.minecraft.network.packet.Packet130UpdateSign;
|
||||
@@ -17,7 +17,7 @@
|
||||
import net.minecraft.network.packet.Packet13PlayerLookMove;
|
||||
import net.minecraft.network.packet.Packet14BlockDig;
|
||||
import net.minecraft.network.packet.Packet15Place;
|
||||
@@ -634,6 +637,7 @@
|
||||
@@ -618,6 +621,7 @@
|
||||
|
||||
public void func_72481_a(Packet3Chat p_72481_1_)
|
||||
{
|
||||
@@ -25,7 +25,7 @@
|
||||
if (this.field_72574_e.func_71126_v() == 2)
|
||||
{
|
||||
this.func_72567_b(new Packet3Chat(ChatMessageComponent.func_111077_e("chat.cannotSend").func_111059_a(EnumChatFormatting.RED)));
|
||||
@@ -1009,6 +1013,11 @@
|
||||
@@ -1013,6 +1017,11 @@
|
||||
}
|
||||
|
||||
public void func_72501_a(Packet250CustomPayload p_72501_1_)
|
||||
@@ -37,9 +37,9 @@
|
||||
{
|
||||
DataInputStream datainputstream;
|
||||
ItemStack itemstack;
|
||||
@@ -1173,4 +1182,18 @@
|
||||
}
|
||||
}
|
||||
@@ -1182,4 +1191,18 @@
|
||||
{
|
||||
return this.field_72576_c;
|
||||
}
|
||||
+
|
||||
+
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.BufferedOutputStream;
|
||||
@@ -386,6 +387,7 @@
|
||||
@@ -392,6 +393,7 @@
|
||||
if (this.field_74472_n && this.field_74473_o.isEmpty())
|
||||
{
|
||||
this.field_74485_r.func_72515_a(this.field_74481_v, this.field_74480_w);
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
|
||||
public abstract class NetHandler
|
||||
{
|
||||
@@ -375,4 +377,8 @@
|
||||
@@ -382,4 +384,8 @@
|
||||
{
|
||||
this.func_72509_a(p_110773_1_);
|
||||
return false;
|
||||
}
|
||||
+
|
||||
+ public abstract void handleVanilla250Packet(Packet250CustomPayload payload);
|
||||
|
||||
@@ -7,5 +7,5 @@
|
||||
- func_73285_a(131, true, false, Packet131MapData.class);
|
||||
+ func_73285_a(131, true, true, Packet131MapData.class);
|
||||
func_73285_a(132, true, false, Packet132TileEntityData.class);
|
||||
func_73285_a(133, true, false, Packet133TileEditorOpen.class);
|
||||
func_73285_a(200, true, false, Packet200Statistic.class);
|
||||
func_73285_a(201, true, false, Packet201PlayerInfo.class);
|
||||
@@ -7,7 +7,7 @@
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.awt.GraphicsEnvironment;
|
||||
@@ -366,7 +367,11 @@
|
||||
@@ -368,7 +369,11 @@
|
||||
{
|
||||
if (this.func_71197_b())
|
||||
{
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
for (long j = 0L; this.field_71317_u; this.field_71296_Q = true)
|
||||
{
|
||||
@@ -405,6 +410,7 @@
|
||||
@@ -407,6 +412,7 @@
|
||||
|
||||
Thread.sleep(1L);
|
||||
}
|
||||
@@ -27,7 +27,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -413,6 +419,10 @@
|
||||
@@ -415,6 +421,10 @@
|
||||
}
|
||||
catch (Throwable throwable)
|
||||
{
|
||||
@@ -38,7 +38,7 @@
|
||||
throwable.printStackTrace();
|
||||
this.func_98033_al().func_98234_c("Encountered an unexpected exception " + throwable.getClass().getSimpleName(), throwable);
|
||||
CrashReport crashreport = null;
|
||||
@@ -443,6 +453,10 @@
|
||||
@@ -445,6 +455,10 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -49,7 +49,7 @@
|
||||
this.func_71260_j();
|
||||
this.field_71316_v = true;
|
||||
}
|
||||
@@ -452,6 +466,8 @@
|
||||
@@ -454,6 +468,8 @@
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -58,7 +58,7 @@
|
||||
this.func_71240_o();
|
||||
}
|
||||
}
|
||||
@@ -468,8 +484,10 @@
|
||||
@@ -470,8 +486,10 @@
|
||||
|
||||
public void func_71217_p()
|
||||
{
|
||||
@@ -69,7 +69,7 @@
|
||||
++this.field_71315_w;
|
||||
|
||||
if (this.field_71295_T)
|
||||
@@ -515,6 +533,7 @@
|
||||
@@ -517,6 +535,7 @@
|
||||
|
||||
this.field_71304_b.func_76319_b();
|
||||
this.field_71304_b.func_76319_b();
|
||||
@@ -77,7 +77,7 @@
|
||||
}
|
||||
|
||||
public void func_71190_q()
|
||||
@@ -542,6 +561,7 @@
|
||||
@@ -544,6 +563,7 @@
|
||||
}
|
||||
|
||||
this.field_71304_b.func_76320_a("tick");
|
||||
@@ -85,7 +85,7 @@
|
||||
CrashReport crashreport;
|
||||
|
||||
try
|
||||
@@ -566,6 +586,7 @@
|
||||
@@ -568,6 +588,7 @@
|
||||
throw new ReportedException(crashreport);
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
this.field_71304_b.func_76319_b();
|
||||
this.field_71304_b.func_76320_a("tracker");
|
||||
worldserver.func_73039_n().func_72788_a();
|
||||
@@ -693,7 +714,7 @@
|
||||
@@ -695,7 +716,7 @@
|
||||
|
||||
public String getServerModName()
|
||||
{
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
this.func_98033_al().func_98233_a("Loading properties");
|
||||
this.field_71340_o = new PropertyManager(new File("server.properties"), this.func_98033_al());
|
||||
|
||||
@@ -131,6 +134,8 @@
|
||||
@@ -132,6 +135,8 @@
|
||||
this.func_98033_al().func_98236_b("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.");
|
||||
this.func_98033_al().func_98236_b("To change this, set \"online-mode\" to \"true\" in the server.properties file.");
|
||||
}
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
this.func_71210_a(new DedicatedPlayerList(this));
|
||||
long j = System.nanoTime();
|
||||
@@ -173,6 +178,7 @@
|
||||
@@ -174,6 +179,7 @@
|
||||
this.func_71191_d((this.func_71207_Z() + 8) / 16 * 16);
|
||||
this.func_71191_d(MathHelper.func_76125_a(this.func_71207_Z(), 64, 256));
|
||||
this.field_71340_o.func_73667_a("max-build-height", Integer.valueOf(this.func_71207_Z()));
|
||||
@@ -33,7 +33,7 @@
|
||||
this.func_98033_al().func_98233_a("Preparing level \"" + this.func_71270_I() + "\"");
|
||||
this.func_71247_a(this.func_71270_I(), this.func_71270_I(), k, worldtype, s2);
|
||||
long i1 = System.nanoTime() - j;
|
||||
@@ -193,7 +199,7 @@
|
||||
@@ -194,7 +200,7 @@
|
||||
this.field_71339_n.func_72602_a();
|
||||
}
|
||||
|
||||
|
||||
+7
-5
@@ -1,14 +1,16 @@
|
||||
--- ../src-base/minecraft/net/minecraft/server/management/ServerConfigurationManager.java
|
||||
+++ ../src-work/minecraft/net/minecraft/server/management/ServerConfigurationManager.java
|
||||
@@ -1,5 +1,7 @@
|
||||
@@ -1,6 +1,9 @@
|
||||
package net.minecraft.server.management;
|
||||
|
||||
import com.google.common.base.Charsets;
|
||||
+
|
||||
+import cpw.mods.fml.common.network.FMLNetworkHandler;
|
||||
+import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.File;
|
||||
@@ -120,6 +122,8 @@
|
||||
@@ -124,6 +127,8 @@
|
||||
|
||||
p_72355_2_.func_71116_b();
|
||||
|
||||
@@ -17,7 +19,7 @@
|
||||
if (nbttagcompound != null && nbttagcompound.func_74764_b("Riding"))
|
||||
{
|
||||
Entity entity = EntityList.func_75615_a(nbttagcompound.func_74775_l("Riding"), worldserver);
|
||||
@@ -234,6 +238,7 @@
|
||||
@@ -238,6 +243,7 @@
|
||||
|
||||
public void func_72367_e(EntityPlayerMP p_72367_1_)
|
||||
{
|
||||
@@ -25,7 +27,7 @@
|
||||
this.func_72391_b(p_72367_1_);
|
||||
WorldServer worldserver = p_72367_1_.func_71121_q();
|
||||
|
||||
@@ -391,6 +396,7 @@
|
||||
@@ -395,6 +401,7 @@
|
||||
this.field_72404_b.add(entityplayermp1);
|
||||
entityplayermp1.func_71116_b();
|
||||
entityplayermp1.func_70606_j(entityplayermp1.func_110143_aJ());
|
||||
@@ -33,7 +35,7 @@
|
||||
return entityplayermp1;
|
||||
}
|
||||
|
||||
@@ -416,6 +422,8 @@
|
||||
@@ -420,6 +427,8 @@
|
||||
PotionEffect potioneffect = (PotionEffect)iterator.next();
|
||||
p_72356_1_.field_71135_a.func_72567_b(new Packet41EntityEffect(p_72356_1_.field_70157_k, potioneffect));
|
||||
}
|
||||
|
||||
@@ -45,3 +45,11 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -131,7 +146,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
- @SideOnly(Side.CLIENT)
|
||||
public double func_70318_a(double p_70318_1_, double p_70318_3_, double p_70318_5_)
|
||||
{
|
||||
double d3 = (double)this.field_70329_l + 0.5D - p_70318_1_;
|
||||
@@ -0,0 +1,13 @@
|
||||
--- ../src-base/minecraft/net/minecraft/util/ResourceLocation.java
|
||||
+++ ../src-work/minecraft/net/minecraft/util/ResourceLocation.java
|
||||
@@ -1,10 +1,7 @@
|
||||
package net.minecraft.util;
|
||||
|
||||
-import cpw.mods.fml.relauncher.Side;
|
||||
-import cpw.mods.fml.relauncher.SideOnly;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
|
||||
-@SideOnly(Side.CLIENT)
|
||||
public class ResourceLocation
|
||||
{
|
||||
private final String field_110626_a;
|
||||
Loaded 100 of 104 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user