Merge branch 'securityupdate'
This commit is contained in:
commit
289ce3339a
|
@ -3,8 +3,8 @@ package cpw.mods.fml.client;
|
|||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.gui.GuiErrorScreen;
|
||||
import cpw.mods.fml.common.IFMLHandledException;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
/**
|
||||
* If a mod throws this exception during loading, it will be called back to render
|
||||
|
|
|
@ -60,7 +60,6 @@ import cpw.mods.fml.common.MissingModsException;
|
|||
import cpw.mods.fml.common.ModContainer;
|
||||
import cpw.mods.fml.common.ModMetadata;
|
||||
import cpw.mods.fml.common.ObfuscationReflectionHelper;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.WrongMinecraftVersionException;
|
||||
import cpw.mods.fml.common.network.EntitySpawnAdjustmentPacket;
|
||||
import cpw.mods.fml.common.network.EntitySpawnPacket;
|
||||
|
@ -72,6 +71,7 @@ import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData;
|
|||
import cpw.mods.fml.common.registry.IThrowableEntity;
|
||||
import cpw.mods.fml.common.registry.ItemData;
|
||||
import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,9 +14,9 @@ import com.google.common.collect.Lists;
|
|||
import com.google.common.collect.Sets;
|
||||
|
||||
import cpw.mods.fml.common.ITickHandler;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.TickType;
|
||||
import cpw.mods.fml.common.registry.TickRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
|
||||
public class KeyBindingRegistry
|
||||
{
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
*/
|
||||
package net.minecraft.src;
|
||||
|
||||
import static cpw.mods.fml.common.Side.CLIENT;
|
||||
import static cpw.mods.fml.relauncher.Side.CLIENT;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
@ -40,7 +40,7 @@ import net.minecraft.world.World;
|
|||
import cpw.mods.fml.client.FMLClientHandler;
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.TickType;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public abstract class BaseMod implements cpw.mods.fml.common.modloader.BaseModProxy
|
||||
{
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
*/
|
||||
package net.minecraft.src;
|
||||
|
||||
import static cpw.mods.fml.common.Side.CLIENT;
|
||||
import static cpw.mods.fml.relauncher.Side.CLIENT;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.Collections;
|
||||
|
@ -67,7 +67,6 @@ import cpw.mods.fml.common.FMLCommonHandler;
|
|||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.ObfuscationReflectionHelper;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.common.modloader.ModLoaderHelper;
|
||||
import cpw.mods.fml.common.modloader.ModLoaderModContainer;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry;
|
||||
|
@ -76,6 +75,7 @@ import cpw.mods.fml.common.network.Player;
|
|||
import cpw.mods.fml.common.registry.EntityRegistry;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import cpw.mods.fml.server.FMLServerHandler;
|
||||
|
||||
public class ModLoader
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
package cpw.mods.fml.common;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.cert.Certificate;
|
||||
|
||||
public class CertificateHelper {
|
||||
|
||||
private static final String HEXES = "0123456789abcdef";
|
||||
|
||||
public static String getFingerprint(Certificate certificate)
|
||||
{
|
||||
try
|
||||
{
|
||||
MessageDigest md = MessageDigest.getInstance("SHA-1");
|
||||
byte[] der = certificate.getEncoded();
|
||||
md.update(der);
|
||||
byte[] digest = md.digest();
|
||||
return hexify(digest);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static String getFingerprint(ByteBuffer buffer)
|
||||
{
|
||||
try
|
||||
{
|
||||
MessageDigest digest = MessageDigest.getInstance("SHA-1");
|
||||
digest.update(buffer);
|
||||
byte[] chksum = digest.digest();
|
||||
return hexify(chksum);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static String hexify(byte[] chksum)
|
||||
{
|
||||
final StringBuilder hex = new StringBuilder( 2 * chksum.length );
|
||||
for ( final byte b : chksum ) {
|
||||
hex.append(HEXES.charAt((b & 0xF0) >> 4))
|
||||
.append(HEXES.charAt((b & 0x0F)));
|
||||
}
|
||||
return hex.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -51,6 +51,7 @@ import cpw.mods.fml.common.network.EntitySpawnPacket;
|
|||
import cpw.mods.fml.common.registry.EntityRegistry.EntityRegistration;
|
||||
import cpw.mods.fml.common.registry.ItemData;
|
||||
import cpw.mods.fml.common.registry.TickRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.server.FMLServerHandler;
|
||||
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ import cpw.mods.fml.common.network.EntitySpawnPacket;
|
|||
import cpw.mods.fml.common.network.ModMissingPacket;
|
||||
import cpw.mods.fml.common.registry.ItemData;
|
||||
import cpw.mods.fml.common.registry.EntityRegistry.EntityRegistration;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
|
||||
public interface IFMLSidedHandler
|
||||
{
|
||||
|
|
|
@ -21,6 +21,7 @@ import java.util.logging.Level;
|
|||
|
||||
import cpw.mods.fml.common.discovery.ASMDataTable;
|
||||
import cpw.mods.fml.common.discovery.ASMDataTable.ASMData;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
|
||||
/**
|
||||
* @author cpw
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
package cpw.mods.fml.common.asm;
|
||||
|
||||
import java.io.ObjectInputStream.GetField;
|
||||
import java.net.JarURLConnection;
|
||||
import java.security.CodeSource;
|
||||
import java.security.cert.Certificate;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.swing.JOptionPane;
|
||||
|
@ -9,11 +13,14 @@ import org.objectweb.asm.ClassVisitor;
|
|||
import org.objectweb.asm.FieldVisitor;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
|
||||
import cpw.mods.fml.common.CertificateHelper;
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.relauncher.IFMLCallHook;
|
||||
import cpw.mods.fml.relauncher.RelaunchClassLoader;
|
||||
|
||||
public class FMLSanityChecker implements IFMLCallHook
|
||||
{
|
||||
private static final String FMLFINGERPRINT = "EE:E2:73:7A:8B:90:5F:7D:C6:02:D5:B7:23:9F:B6:29:C2:18:0F:3E".toLowerCase().replace(":","");
|
||||
static class MLDetectorClassVisitor extends ClassVisitor
|
||||
{
|
||||
private boolean foundMarker = false;
|
||||
|
@ -38,6 +45,34 @@ public class FMLSanityChecker implements IFMLCallHook
|
|||
@Override
|
||||
public Void call() throws Exception
|
||||
{
|
||||
CodeSource codeSource = getClass().getProtectionDomain().getCodeSource();
|
||||
boolean goodFML = false;
|
||||
if (codeSource.getLocation().getProtocol().equals("jar"))
|
||||
{
|
||||
Certificate[] certificates = codeSource.getCertificates();
|
||||
if (certificates!=null && certificates.length>0)
|
||||
{
|
||||
Certificate certificate = certificates[0];
|
||||
String fingerprint = CertificateHelper.getFingerprint(certificate);
|
||||
if (fingerprint.equals(FMLFINGERPRINT))
|
||||
{
|
||||
FMLLog.info("Found valid fingerprint for FML: %s", fingerprint);
|
||||
goodFML = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
FMLLog.severe("Found invalid fingerprint for FML: %s", fingerprint);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
goodFML = true;
|
||||
}
|
||||
if (!goodFML)
|
||||
{
|
||||
FMLLog.severe("FML appears to be missing it's signature data. This is not a good thing");
|
||||
}
|
||||
byte[] mlClass = cl.getClassBytes("ModLoader");
|
||||
// Only care in obfuscated env
|
||||
if (mlClass == null)
|
||||
|
|
|
@ -35,8 +35,8 @@ import com.google.common.base.Objects;
|
|||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class MCPMerger
|
||||
{
|
||||
|
|
|
@ -11,9 +11,9 @@ import org.objectweb.asm.tree.ClassNode;
|
|||
import org.objectweb.asm.tree.FieldNode;
|
||||
import org.objectweb.asm.tree.MethodNode;
|
||||
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.FMLRelauncher;
|
||||
import cpw.mods.fml.relauncher.IClassTransformer;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class SideTransformer implements IClassTransformer
|
||||
{
|
||||
|
|
|
@ -42,6 +42,10 @@ public class JarDiscoverer implements ITypeDiscoverer
|
|||
}
|
||||
for (ZipEntry ze : Collections.list(jar.entries()))
|
||||
{
|
||||
if (ze.getName()!=null && ze.getName().startsWith("__MACOSX"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
Matcher match = classFile.matcher(ze.getName());
|
||||
if (match.matches())
|
||||
{
|
||||
|
|
|
@ -2,7 +2,7 @@ package cpw.mods.fml.common.event;
|
|||
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.LoaderState.ModState;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
|
||||
public abstract class FMLStateEvent extends FMLEvent
|
||||
{
|
||||
|
|
|
@ -25,9 +25,9 @@ import net.minecraft.network.packet.NetHandler;
|
|||
import net.minecraft.network.packet.Packet250CustomPayload;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.TickType;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
|
@ -48,7 +48,6 @@ import cpw.mods.fml.common.ModClassLoader;
|
|||
import cpw.mods.fml.common.ModContainer;
|
||||
import cpw.mods.fml.common.ModMetadata;
|
||||
import cpw.mods.fml.common.ProxyInjector;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.TickType;
|
||||
import cpw.mods.fml.common.discovery.ASMDataTable;
|
||||
import cpw.mods.fml.common.discovery.ASMDataTable.ASMData;
|
||||
|
@ -66,6 +65,7 @@ import cpw.mods.fml.common.registry.TickRegistry;
|
|||
import cpw.mods.fml.common.versioning.ArtifactVersion;
|
||||
import cpw.mods.fml.common.versioning.DefaultArtifactVersion;
|
||||
import cpw.mods.fml.common.versioning.VersionRange;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
|
||||
public class ModLoaderModContainer implements ModContainer
|
||||
{
|
||||
|
|
|
@ -11,12 +11,12 @@ import com.google.common.base.Strings;
|
|||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.ModContainer;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.discovery.ASMDataTable;
|
||||
import cpw.mods.fml.common.discovery.ASMDataTable.ASMData;
|
||||
import cpw.mods.fml.common.versioning.DefaultArtifactVersion;
|
||||
import cpw.mods.fml.common.versioning.InvalidVersionSpecificationException;
|
||||
import cpw.mods.fml.common.versioning.VersionRange;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
|
||||
public class NetworkModHandler
|
||||
{
|
||||
|
|
|
@ -29,8 +29,8 @@ import cpw.mods.fml.common.FMLCommonHandler;
|
|||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.ModContainer;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.network.FMLPacket.Type;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
|
||||
/**
|
||||
* @author cpw
|
||||
|
|
|
@ -8,8 +8,8 @@ import com.google.common.collect.Queues;
|
|||
|
||||
import cpw.mods.fml.common.IScheduledTickHandler;
|
||||
import cpw.mods.fml.common.ITickHandler;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.SingleIntervalHandler;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
|
||||
public class TickRegistry
|
||||
{
|
||||
|
|
|
@ -3,8 +3,12 @@ package cpw.mods.fml.relauncher;
|
|||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.JarURLConnection;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.net.URLConnection;
|
||||
import java.security.CodeSigner;
|
||||
import java.security.CodeSource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
@ -13,15 +17,17 @@ import java.util.HashSet;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.jar.Attributes.Name;
|
||||
import java.util.jar.Attributes;
|
||||
import java.util.jar.JarEntry;
|
||||
import java.util.jar.JarFile;
|
||||
import java.util.jar.Manifest;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
|
||||
public class RelaunchClassLoader extends URLClassLoader
|
||||
{
|
||||
// Left behind for CCC/NEI compatibility
|
||||
private static String[] excludedPackages = new String[0];
|
||||
// Left behind for CCC/NEI compatibility
|
||||
private static String[] transformerExclusions = new String[0];
|
||||
|
||||
private List<URL> sources;
|
||||
private ClassLoader parent;
|
||||
|
||||
|
@ -31,6 +37,9 @@ public class RelaunchClassLoader extends URLClassLoader
|
|||
|
||||
private Set<String> classLoaderExceptions = new HashSet<String>();
|
||||
private Set<String> transformerExceptions = new HashSet<String>();
|
||||
private Map<Package,Manifest> packageManifests = new HashMap<Package,Manifest>();
|
||||
|
||||
private static Manifest EMPTY = new Manifest();
|
||||
|
||||
public RelaunchClassLoader(URL[] sources)
|
||||
{
|
||||
|
@ -46,6 +55,7 @@ public class RelaunchClassLoader extends URLClassLoader
|
|||
// standard classloader exclusions
|
||||
addClassLoaderExclusion("java.");
|
||||
addClassLoaderExclusion("sun.");
|
||||
addClassLoaderExclusion("org.lwjgl.");
|
||||
addClassLoaderExclusion("cpw.mods.fml.relauncher.");
|
||||
addClassLoaderExclusion("net.minecraftforge.classloading.");
|
||||
|
||||
|
@ -53,8 +63,6 @@ public class RelaunchClassLoader extends URLClassLoader
|
|||
addTransformerExclusion("javax.");
|
||||
addTransformerExclusion("org.objectweb.asm.");
|
||||
addTransformerExclusion("com.google.common.");
|
||||
addTransformerExclusion("cpw.mods.fml.common.asm.SideOnly");
|
||||
addTransformerExclusion("cpw.mods.fml.common.Side");
|
||||
}
|
||||
|
||||
public void registerTransformer(String transformerClassName)
|
||||
|
@ -75,18 +83,6 @@ public class RelaunchClassLoader extends URLClassLoader
|
|||
{
|
||||
throw new ClassNotFoundException(name);
|
||||
}
|
||||
// NEI/CCC compatibility code
|
||||
if (excludedPackages.length != 0)
|
||||
{
|
||||
classLoaderExceptions.addAll(Arrays.asList(excludedPackages));
|
||||
excludedPackages = new String[0];
|
||||
}
|
||||
if (transformerExclusions.length != 0)
|
||||
{
|
||||
transformerExceptions.addAll(Arrays.asList(transformerExclusions));
|
||||
transformerExclusions = new String[0];
|
||||
}
|
||||
|
||||
for (String st : classLoaderExceptions)
|
||||
{
|
||||
if (name.startsWith(st))
|
||||
|
@ -120,18 +116,57 @@ public class RelaunchClassLoader extends URLClassLoader
|
|||
|
||||
try
|
||||
{
|
||||
CodeSigner[] signers = null;
|
||||
int lastDot = name.lastIndexOf('.');
|
||||
if (lastDot > -1)
|
||||
String pkgname = lastDot == -1 ? "" : name.substring(0, lastDot);
|
||||
String fName = name.replace('.', '/').concat(".class");
|
||||
String pkgPath = pkgname.replace('.', '/');
|
||||
URLConnection urlConnection = findCodeSourceConnectionFor(fName);
|
||||
if (urlConnection instanceof JarURLConnection && lastDot > -1)
|
||||
{
|
||||
String pkgname = name.substring(0, lastDot);
|
||||
if (getPackage(pkgname)==null)
|
||||
JarURLConnection jarUrlConn = (JarURLConnection)urlConnection;
|
||||
JarFile jf = jarUrlConn.getJarFile();
|
||||
if (jf != null && jf.getManifest() != null)
|
||||
{
|
||||
definePackage(pkgname, null, null, null, null, null, null, null);
|
||||
Manifest mf = jf.getManifest();
|
||||
JarEntry ent = jf.getJarEntry(fName);
|
||||
Package pkg = getPackage(pkgname);
|
||||
getClassBytes(name);
|
||||
signers = ent.getCodeSigners();
|
||||
if (pkg == null)
|
||||
{
|
||||
pkg = definePackage(pkgname, mf, jarUrlConn.getJarFileURL());
|
||||
packageManifests.put(pkg, mf);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pkg.isSealed() && !pkg.isSealed(jarUrlConn.getJarFileURL()))
|
||||
{
|
||||
FMLLog.severe("The jar file %s is trying to seal already secured path %s", jf.getName(), pkgname);
|
||||
}
|
||||
else if (isSealed(pkgname, mf))
|
||||
{
|
||||
FMLLog.severe("The jar file %s has a security seal for path %s, but that path is defined and not secure", jf.getName(), pkgname);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (lastDot > -1)
|
||||
{
|
||||
Package pkg = getPackage(pkgname);
|
||||
if (pkg == null)
|
||||
{
|
||||
pkg = definePackage(pkgname, null, null, null, null, null, null, null);
|
||||
packageManifests.put(pkg, EMPTY);
|
||||
}
|
||||
else if (pkg.isSealed())
|
||||
{
|
||||
FMLLog.severe("The URL %s is defining elements for sealed path %s", urlConnection.getURL(), pkgname);
|
||||
}
|
||||
}
|
||||
byte[] basicClass = getClassBytes(name);
|
||||
byte[] transformedClass = runTransformers(name, basicClass);
|
||||
Class<?> cl = defineClass(name, transformedClass, 0, transformedClass.length);
|
||||
Class<?> cl = defineClass(name, transformedClass, 0, transformedClass.length, new CodeSource(urlConnection.getURL(), signers));
|
||||
cachedClasses.put(name, cl);
|
||||
return cl;
|
||||
}
|
||||
|
@ -142,32 +177,38 @@ public class RelaunchClassLoader extends URLClassLoader
|
|||
}
|
||||
}
|
||||
|
||||
public byte[] getClassBytes(String name) throws IOException
|
||||
private boolean isSealed(String path, Manifest man)
|
||||
{
|
||||
InputStream classStream = null;
|
||||
try
|
||||
{
|
||||
URL classResource = findResource(name.replace('.', '/').concat(".class"));
|
||||
if (classResource == null)
|
||||
{
|
||||
return null;
|
||||
Attributes attr = man.getAttributes(path);
|
||||
String sealed = null;
|
||||
if (attr != null) {
|
||||
sealed = attr.getValue(Name.SEALED);
|
||||
}
|
||||
classStream = classResource.openStream();
|
||||
return readFully(classStream);
|
||||
if (sealed == null) {
|
||||
if ((attr = man.getMainAttributes()) != null) {
|
||||
sealed = attr.getValue(Name.SEALED);
|
||||
}
|
||||
finally
|
||||
}
|
||||
return "true".equalsIgnoreCase(sealed);
|
||||
}
|
||||
|
||||
private URLConnection findCodeSourceConnectionFor(String name)
|
||||
{
|
||||
if (classStream != null)
|
||||
URL res = findResource(name);
|
||||
if (res != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
classStream.close();
|
||||
return res.openConnection();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
// Swallow the close exception
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -227,4 +268,33 @@ public class RelaunchClassLoader extends URLClassLoader
|
|||
{
|
||||
transformerExceptions.add(toExclude);
|
||||
}
|
||||
|
||||
public byte[] getClassBytes(String name) throws IOException
|
||||
{
|
||||
InputStream classStream = null;
|
||||
try
|
||||
{
|
||||
URL classResource = findResource(name.replace('.', '/').concat(".class"));
|
||||
if (classResource == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
classStream = classResource.openStream();
|
||||
return readFully(classStream);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (classStream != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
classStream.close();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
// Swallow the close exception
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ import java.util.jar.Attributes;
|
|||
import java.util.jar.JarFile;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import cpw.mods.fml.common.CertificateHelper;
|
||||
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.TransformerExclusions;
|
||||
|
||||
public class RelaunchLibraryManager
|
||||
|
@ -488,7 +489,6 @@ public class RelaunchLibraryManager
|
|||
return loadedLibraries;
|
||||
}
|
||||
|
||||
private static final String HEXES = "0123456789abcdef";
|
||||
private static ByteBuffer downloadBuffer = ByteBuffer.allocateDirect(1 << 22);
|
||||
static IDownloadDisplay downloadMonitor;
|
||||
|
||||
|
@ -560,21 +560,6 @@ public class RelaunchLibraryManager
|
|||
|
||||
private static String generateChecksum(ByteBuffer buffer)
|
||||
{
|
||||
try
|
||||
{
|
||||
MessageDigest digest = MessageDigest.getInstance("SHA-1");
|
||||
digest.update(buffer);
|
||||
byte[] chksum = digest.digest();
|
||||
final StringBuilder hex = new StringBuilder( 2 * chksum.length );
|
||||
for ( final byte b : chksum ) {
|
||||
hex.append(HEXES.charAt((b & 0xF0) >> 4))
|
||||
.append(HEXES.charAt((b & 0x0F)));
|
||||
}
|
||||
return hex.toString();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return CertificateHelper.getFingerprint(buffer);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package cpw.mods.fml.common;
|
||||
package cpw.mods.fml.relauncher;
|
||||
|
||||
public enum Side {
|
||||
CLIENT, SERVER, BUKKIT;
|
|
@ -1,11 +1,10 @@
|
|||
package cpw.mods.fml.common.asm;
|
||||
package cpw.mods.fml.relauncher;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.CONSTRUCTOR})
|
|
@ -28,7 +28,6 @@ import cpw.mods.fml.common.FMLCommonHandler;
|
|||
import cpw.mods.fml.common.IFMLSidedHandler;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.ObfuscationReflectionHelper;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.network.EntitySpawnAdjustmentPacket;
|
||||
import cpw.mods.fml.common.network.EntitySpawnPacket;
|
||||
import cpw.mods.fml.common.network.ModMissingPacket;
|
||||
|
@ -37,6 +36,7 @@ import cpw.mods.fml.common.registry.GameData;
|
|||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.common.registry.ItemData;
|
||||
import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
|
||||
/**
|
||||
* Handles primary communication from hooked code into the system
|
||||
|
|
|
@ -52,6 +52,7 @@ def main():
|
|||
try:
|
||||
process = subprocess.Popen(cmdsplit(cmd), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, bufsize=-1)
|
||||
branch, _ = process.communicate()
|
||||
branch = branch.strip()
|
||||
except OSError:
|
||||
print("Git not found")
|
||||
branch="master"
|
||||
|
|
|
@ -1,22 +1,18 @@
|
|||
--- ../src-base/minecraft/net/minecraft/client/Minecraft.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/Minecraft.java
|
||||
@@ -1,7 +1,15 @@
|
||||
@@ -1,5 +1,11 @@
|
||||
package net.minecraft.client;
|
||||
|
||||
+import cpw.mods.fml.client.FMLClientHandler;
|
||||
+import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
+import cpw.mods.fml.common.registry.GameData;
|
||||
+import cpw.mods.fml.common.registry.GameRegistry;
|
||||
+import cpw.mods.fml.common.registry.ItemData;
|
||||
+import cpw.mods.fml.relauncher.ArgsWrapper;
|
||||
+import cpw.mods.fml.relauncher.FMLRelauncher;
|
||||
+
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Canvas;
|
||||
import java.awt.Color;
|
||||
@@ -120,6 +128,8 @@
|
||||
@@ -120,6 +126,8 @@
|
||||
import org.lwjgl.opengl.PixelFormat;
|
||||
import org.lwjgl.util.glu.GLU;
|
||||
|
||||
|
@ -25,7 +21,7 @@
|
|||
@SideOnly(Side.CLIENT)
|
||||
public abstract class Minecraft implements Runnable, IPlayerUsage
|
||||
{
|
||||
@@ -302,6 +312,8 @@
|
||||
@@ -302,6 +310,8 @@
|
||||
this.field_71466_p = new FontRenderer(this.field_71474_y, "/font/default.png", this.field_71446_o, false);
|
||||
this.field_71464_q = new FontRenderer(this.field_71474_y, "/font/alternate.png", this.field_71446_o, false);
|
||||
|
||||
|
@ -34,7 +30,7 @@
|
|||
if (this.field_71474_y.field_74363_ab != null)
|
||||
{
|
||||
StringTranslate.func_74808_a().func_74810_a(this.field_71474_y.field_74363_ab);
|
||||
@@ -346,6 +358,8 @@
|
||||
@@ -346,6 +356,8 @@
|
||||
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);
|
||||
|
||||
|
@ -43,7 +39,7 @@
|
|||
try
|
||||
{
|
||||
this.field_71430_V = new ThreadDownloadResources(this.field_71412_D, this);
|
||||
@@ -374,6 +388,8 @@
|
||||
@@ -374,6 +386,8 @@
|
||||
{
|
||||
this.func_71352_k();
|
||||
}
|
||||
|
@ -52,7 +48,7 @@
|
|||
}
|
||||
|
||||
private void func_71357_I() throws LWJGLException
|
||||
@@ -732,9 +748,11 @@
|
||||
@@ -732,9 +746,11 @@
|
||||
|
||||
if (!this.field_71454_w)
|
||||
{
|
||||
|
@ -64,7 +60,7 @@
|
|||
}
|
||||
|
||||
GL11.glFlush();
|
||||
@@ -1264,10 +1282,14 @@
|
||||
@@ -1264,10 +1280,14 @@
|
||||
|
||||
public void func_71407_l()
|
||||
{
|
||||
|
@ -79,7 +75,7 @@
|
|||
|
||||
this.field_71424_I.func_76320_a("stats");
|
||||
this.field_71413_E.func_77449_e();
|
||||
@@ -1724,6 +1746,8 @@
|
||||
@@ -1724,6 +1744,8 @@
|
||||
this.field_71453_ak.func_74428_b();
|
||||
}
|
||||
|
||||
|
@ -88,7 +84,7 @@
|
|||
this.field_71424_I.func_76319_b();
|
||||
this.field_71423_H = func_71386_F();
|
||||
}
|
||||
@@ -1762,8 +1786,27 @@
|
||||
@@ -1762,8 +1784,27 @@
|
||||
}
|
||||
|
||||
this.field_71413_E.func_77450_a(StatList.field_75936_f, 1);
|
||||
|
@ -116,7 +112,7 @@
|
|||
this.field_71455_al = true;
|
||||
this.field_71461_s.func_73720_a(StatCollector.func_74838_a("menu.loadingLevel"));
|
||||
|
||||
@@ -1978,6 +2021,12 @@
|
||||
@@ -1978,6 +2019,12 @@
|
||||
|
||||
public static void main(String[] p_main_0_)
|
||||
{
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
--- ../src-base/minecraft/net/minecraft/client/MinecraftApplet.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/MinecraftApplet.java
|
||||
@@ -2,6 +2,8 @@
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.minecraft.client;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
+import cpw.mods.fml.relauncher.FMLRelauncher;
|
||||
+
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.applet.Applet;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Canvas;
|
||||
@@ -15,6 +17,11 @@
|
||||
@@ -15,6 +16,11 @@
|
||||
private Thread field_71482_c = null;
|
||||
|
||||
public void init()
|
||||
|
@ -21,7 +19,7 @@
|
|||
{
|
||||
this.field_71483_a = new CanvasMinecraftApplet(this);
|
||||
boolean var1 = "true".equalsIgnoreCase(this.getParameter("fullscreen"));
|
||||
@@ -62,6 +69,11 @@
|
||||
@@ -62,6 +68,11 @@
|
||||
|
||||
public void start()
|
||||
{
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
+import cpw.mods.fml.client.GuiModList;
|
||||
+import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.awt.image.BufferedImage;
|
||||
@@ -10,6 +12,7 @@
|
||||
import java.util.ArrayList;
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
--- ../src-base/minecraft/net/minecraft/client/multiplayer/NetClientHandler.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/multiplayer/NetClientHandler.java
|
||||
@@ -2,6 +2,8 @@
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.minecraft.client.multiplayer;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
+import cpw.mods.fml.common.network.FMLNetworkHandler;
|
||||
+
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.DataInputStream;
|
||||
@@ -172,11 +174,14 @@
|
||||
@@ -172,11 +173,14 @@
|
||||
public int field_72556_d = 20;
|
||||
Random field_72557_e = new Random();
|
||||
|
||||
|
@ -24,7 +22,7 @@
|
|||
}
|
||||
|
||||
public NetClientHandler(Minecraft p_i3104_1_, IntegratedServer p_i3104_2_) throws IOException
|
||||
@@ -184,6 +189,7 @@
|
||||
@@ -184,6 +188,7 @@
|
||||
this.field_72563_h = p_i3104_1_;
|
||||
this.field_72555_g = new MemoryConnection(this);
|
||||
p_i3104_2_.func_71343_a().func_71754_a((MemoryConnection)this.field_72555_g, p_i3104_1_.field_71449_j.field_74286_b);
|
||||
|
@ -32,7 +30,7 @@
|
|||
}
|
||||
|
||||
public void func_72547_c()
|
||||
@@ -254,6 +260,7 @@
|
||||
@@ -254,6 +259,7 @@
|
||||
|
||||
public void func_72513_a(Packet252SharedKey p_72513_1_)
|
||||
{
|
||||
|
@ -40,7 +38,7 @@
|
|||
this.func_72552_c(new Packet205ClientCommand(0));
|
||||
}
|
||||
|
||||
@@ -269,6 +276,7 @@
|
||||
@@ -269,6 +275,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);
|
||||
|
@ -48,7 +46,7 @@
|
|||
this.field_72563_h.field_71474_y.func_82879_c();
|
||||
}
|
||||
|
||||
@@ -754,6 +762,7 @@
|
||||
@@ -754,6 +761,7 @@
|
||||
|
||||
public void func_72481_a(Packet3Chat p_72481_1_)
|
||||
{
|
||||
|
@ -56,7 +54,7 @@
|
|||
this.field_72563_h.field_71456_v.func_73827_b().func_73765_a(p_72481_1_.field_73476_b);
|
||||
}
|
||||
|
||||
@@ -1243,6 +1252,11 @@
|
||||
@@ -1243,6 +1251,11 @@
|
||||
|
||||
public void func_72494_a(Packet131MapData p_72494_1_)
|
||||
{
|
||||
|
@ -68,7 +66,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);
|
||||
@@ -1352,6 +1366,11 @@
|
||||
@@ -1352,6 +1365,11 @@
|
||||
|
||||
public void func_72501_a(Packet250CustomPayload p_72501_1_)
|
||||
{
|
||||
|
@ -80,7 +78,7 @@
|
|||
if ("MC|TPack".equals(p_72501_1_.field_73630_a))
|
||||
{
|
||||
String[] var2 = (new String(p_72501_1_.field_73629_c)).split("\u0000");
|
||||
@@ -1396,4 +1415,20 @@
|
||||
@@ -1396,4 +1414,20 @@
|
||||
{
|
||||
return this.field_72555_g;
|
||||
}
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.client.renderer;
|
||||
|
||||
+import cpw.mods.fml.client.TextureFXManager;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
@@ -40,7 +41,12 @@
|
||||
public void func_78443_a(EntityLiving p_78443_1_, ItemStack p_78443_2_, int p_78443_3_)
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
+import cpw.mods.fml.client.TextureFXManager;
|
||||
+import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.awt.Color;
|
||||
+import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.client.renderer.texturefx;
|
||||
|
||||
+import cpw.mods.fml.client.FMLTextureFX;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.awt.image.BufferedImage;
|
||||
@@ -10,13 +11,17 @@
|
||||
import net.minecraft.util.ChunkCoordinates;
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.client.renderer.texturefx;
|
||||
|
||||
+import cpw.mods.fml.client.FMLTextureFX;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.client.renderer.texturefx;
|
||||
|
||||
+import cpw.mods.fml.client.FMLTextureFX;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.util.MathHelper;
|
||||
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.client.renderer.texturefx;
|
||||
|
||||
+import cpw.mods.fml.client.FMLTextureFX;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.util.MathHelper;
|
||||
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.client.renderer.texturefx;
|
||||
|
||||
+import cpw.mods.fml.client.FMLTextureFX;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.util.Random;
|
||||
@@ -7,31 +8,39 @@
|
||||
import net.minecraft.util.MathHelper;
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.client.renderer.texturefx;
|
||||
|
||||
+import cpw.mods.fml.client.FMLTextureFX;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
+
|
||||
+import java.awt.Graphics2D;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.client.renderer.texturefx;
|
||||
|
||||
+import cpw.mods.fml.client.FMLTextureFX;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.client.renderer.texturefx;
|
||||
|
||||
+import cpw.mods.fml.client.FMLTextureFX;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.client.settings;
|
||||
|
||||
+import cpw.mods.fml.client.FMLClientHandler;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.BufferedReader;
|
||||
@@ -607,6 +608,7 @@
|
||||
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.crash;
|
||||
|
||||
+import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.File;
|
||||
@@ -44,6 +45,7 @@
|
||||
this.field_85061_c.func_71500_a("AABB Pool Size", new CallableCrashMemoryReport(this));
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
@@ -1,9 +1,5 @@
|
||||
package net.minecraft.entity.boss;
|
||||
|
||||
-import cpw.mods.fml.common.Side;
|
||||
-import cpw.mods.fml.common.asm.SideOnly;
|
||||
-import cpw.mods.fml.relauncher.Side;
|
||||
-import cpw.mods.fml.relauncher.SideOnly;
|
||||
-
|
||||
-@SideOnly(Side.CLIENT)
|
||||
public interface IBossDisplayData
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
--- ../src-base/minecraft/net/minecraft/entity/passive/EntityVillager.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/passive/EntityVillager.java
|
||||
@@ -2,6 +2,8 @@
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.minecraft.entity.passive;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
+import cpw.mods.fml.common.registry.VillagerRegistry;
|
||||
+
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
@@ -239,7 +241,7 @@
|
||||
@@ -239,7 +240,7 @@
|
||||
case 4:
|
||||
return "/mob/villager/butcher.png";
|
||||
default:
|
||||
|
@ -18,7 +16,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -420,6 +422,7 @@
|
||||
@@ -420,6 +421,7 @@
|
||||
|
||||
MerchantRecipeList var2;
|
||||
var2 = new MerchantRecipeList();
|
||||
|
@ -26,7 +24,7 @@
|
|||
label48:
|
||||
|
||||
switch (this.func_70946_n())
|
||||
@@ -624,7 +627,7 @@
|
||||
@@ -624,7 +626,7 @@
|
||||
|
||||
public void func_82163_bD()
|
||||
{
|
||||
|
|
|
@ -1,17 +1,14 @@
|
|||
--- ../src-base/minecraft/net/minecraft/entity/player/EntityPlayer.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/player/EntityPlayer.java
|
||||
@@ -1,7 +1,10 @@
|
||||
@@ -1,5 +1,7 @@
|
||||
package net.minecraft.entity.player;
|
||||
|
||||
+import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
+import cpw.mods.fml.common.network.FMLNetworkHandler;
|
||||
+
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import net.minecraft.block.Block;
|
||||
@@ -172,6 +175,7 @@
|
||||
@@ -172,6 +174,7 @@
|
||||
|
||||
public void func_70071_h_()
|
||||
{
|
||||
|
@ -19,7 +16,7 @@
|
|||
if (this.field_71074_e != null)
|
||||
{
|
||||
ItemStack var1 = this.field_71071_by.func_70448_g();
|
||||
@@ -295,6 +299,7 @@
|
||||
@@ -295,6 +298,7 @@
|
||||
{
|
||||
this.field_71100_bB.func_75118_a(this);
|
||||
}
|
||||
|
@ -27,7 +24,7 @@
|
|||
}
|
||||
|
||||
public int func_82145_z()
|
||||
@@ -1802,4 +1807,9 @@
|
||||
@@ -1802,4 +1806,9 @@
|
||||
{
|
||||
return this.func_82241_s(1);
|
||||
}
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
--- ../src-base/minecraft/net/minecraft/item/Item.java
|
||||
+++ ../src-work/minecraft/net/minecraft/item/Item.java
|
||||
@@ -2,6 +2,8 @@
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.minecraft.item;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
+import cpw.mods.fml.common.registry.GameData;
|
||||
+
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import net.minecraft.block.Block;
|
||||
@@ -204,6 +206,8 @@
|
||||
@@ -204,6 +205,8 @@
|
||||
}
|
||||
|
||||
field_77698_e[256 + p_i3659_1_] = this;
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
--- ../src-base/minecraft/net/minecraft/network/MemoryConnection.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/MemoryConnection.java
|
||||
@@ -2,6 +2,8 @@
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.minecraft.network;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
+import cpw.mods.fml.common.network.FMLNetworkHandler;
|
||||
+
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.IOException;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.SocketAddress;
|
||||
@@ -73,6 +75,7 @@
|
||||
@@ -73,6 +74,7 @@
|
||||
if (this.field_74441_e && this.field_74442_b.isEmpty())
|
||||
{
|
||||
this.field_74440_d.func_72515_a(this.field_74438_f, this.field_74439_g);
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
--- ../src-base/minecraft/net/minecraft/network/TcpConnection.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/TcpConnection.java
|
||||
@@ -2,6 +2,8 @@
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.minecraft.network;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
+import cpw.mods.fml.common.network.FMLNetworkHandler;
|
||||
+
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
@@ -391,6 +393,7 @@
|
||||
@@ -391,6 +392,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);
|
||||
|
|
|
@ -1,18 +1,15 @@
|
|||
--- ../src-base/minecraft/net/minecraft/server/MinecraftServer.java
|
||||
+++ ../src-work/minecraft/net/minecraft/server/MinecraftServer.java
|
||||
@@ -1,7 +1,11 @@
|
||||
@@ -1,5 +1,8 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
+import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
+import cpw.mods.fml.relauncher.ArgsWrapper;
|
||||
+import cpw.mods.fml.relauncher.FMLRelauncher;
|
||||
+
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.awt.GraphicsEnvironment;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@@ -376,7 +380,11 @@
|
||||
@@ -376,7 +379,11 @@
|
||||
{
|
||||
if (this.func_71197_b())
|
||||
{
|
||||
|
@ -24,7 +21,7 @@
|
|||
|
||||
for (long var50 = 0L; this.field_71317_u; this.field_71296_Q = true)
|
||||
{
|
||||
@@ -415,6 +423,7 @@
|
||||
@@ -415,6 +422,7 @@
|
||||
|
||||
Thread.sleep(1L);
|
||||
}
|
||||
|
@ -32,7 +29,7 @@
|
|||
}
|
||||
else
|
||||
{
|
||||
@@ -423,6 +432,10 @@
|
||||
@@ -423,6 +431,10 @@
|
||||
}
|
||||
catch (Throwable var48)
|
||||
{
|
||||
|
@ -43,7 +40,7 @@
|
|||
var48.printStackTrace();
|
||||
field_71306_a.log(Level.SEVERE, "Encountered an unexpected exception " + var48.getClass().getSimpleName(), var48);
|
||||
CrashReport var2 = null;
|
||||
@@ -453,6 +466,10 @@
|
||||
@@ -453,6 +465,10 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -54,7 +51,7 @@
|
|||
this.func_71260_j();
|
||||
this.field_71316_v = true;
|
||||
}
|
||||
@@ -478,8 +495,10 @@
|
||||
@@ -478,8 +494,10 @@
|
||||
|
||||
public void func_71217_p()
|
||||
{
|
||||
|
@ -65,7 +62,7 @@
|
|||
++this.field_71315_w;
|
||||
|
||||
if (this.field_71295_T)
|
||||
@@ -525,6 +544,7 @@
|
||||
@@ -525,6 +543,7 @@
|
||||
|
||||
this.field_71304_b.func_76319_b();
|
||||
this.field_71304_b.func_76319_b();
|
||||
|
@ -73,7 +70,7 @@
|
|||
}
|
||||
|
||||
public void func_71190_q()
|
||||
@@ -552,6 +572,7 @@
|
||||
@@ -552,6 +571,7 @@
|
||||
}
|
||||
|
||||
this.field_71304_b.func_76320_a("tick");
|
||||
|
@ -81,7 +78,7 @@
|
|||
CrashReport var6;
|
||||
|
||||
try
|
||||
@@ -576,6 +597,7 @@
|
||||
@@ -576,6 +596,7 @@
|
||||
throw new ReportedException(var6);
|
||||
}
|
||||
|
||||
|
@ -89,7 +86,7 @@
|
|||
this.field_71304_b.func_76319_b();
|
||||
this.field_71304_b.func_76320_a("tracker");
|
||||
var4.func_73039_n().func_72788_a();
|
||||
@@ -703,7 +725,7 @@
|
||||
@@ -703,7 +724,7 @@
|
||||
|
||||
public String getServerModName()
|
||||
{
|
||||
|
@ -98,7 +95,7 @@
|
|||
}
|
||||
|
||||
public CrashReport func_71230_b(CrashReport p_71230_1_)
|
||||
@@ -1144,6 +1166,13 @@
|
||||
@@ -1144,6 +1165,13 @@
|
||||
@SideOnly(Side.SERVER)
|
||||
public static void main(String[] p_main_0_)
|
||||
{
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.server;
|
||||
|
||||
+import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.IOException;
|
||||
@@ -53,6 +54,7 @@
|
||||
catch (Exception var6)
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.server.dedicated;
|
||||
|
||||
+import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.File;
|
||||
@@ -57,6 +58,8 @@
|
||||
field_71306_a.warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\"");
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.server.integrated;
|
||||
|
||||
+import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.File;
|
||||
@@ -110,6 +111,7 @@
|
||||
this.func_71253_a(CryptManager.func_75891_b());
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
--- ../src-base/minecraft/net/minecraft/server/integrated/IntegratedServerListenThread.java
|
||||
+++ ../src-work/minecraft/net/minecraft/server/integrated/IntegratedServerListenThread.java
|
||||
@@ -2,6 +2,8 @@
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.minecraft.server.integrated;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
+import cpw.mods.fml.common.network.FMLNetworkHandler;
|
||||
+
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
@@ -63,7 +65,7 @@
|
||||
@@ -63,7 +64,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,16 +1,14 @@
|
|||
--- ../src-base/minecraft/net/minecraft/server/management/ServerConfigurationManager.java
|
||||
+++ ../src-work/minecraft/net/minecraft/server/management/ServerConfigurationManager.java
|
||||
@@ -2,6 +2,9 @@
|
||||
@@ -1,5 +1,7 @@
|
||||
package net.minecraft.server.management;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
+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;
|
||||
import java.net.SocketAddress;
|
||||
import java.text.SimpleDateFormat;
|
||||
@@ -107,6 +110,8 @@
|
||||
@@ -107,6 +109,8 @@
|
||||
}
|
||||
|
||||
p_72355_2_.func_71116_b();
|
||||
|
@ -19,7 +17,7 @@
|
|||
}
|
||||
|
||||
public void func_72364_a(WorldServer[] p_72364_1_)
|
||||
@@ -173,6 +178,7 @@
|
||||
@@ -173,6 +177,7 @@
|
||||
|
||||
public void func_72367_e(EntityPlayerMP p_72367_1_)
|
||||
{
|
||||
|
@ -27,7 +25,7 @@
|
|||
this.func_72391_b(p_72367_1_);
|
||||
WorldServer var2 = p_72367_1_.func_71121_q();
|
||||
var2.func_72900_e(p_72367_1_);
|
||||
@@ -322,6 +328,7 @@
|
||||
@@ -322,6 +327,7 @@
|
||||
var8.func_72838_d(var7);
|
||||
this.field_72404_b.add(var7);
|
||||
var7.func_71116_b();
|
||||
|
@ -35,7 +33,7 @@
|
|||
return var7;
|
||||
}
|
||||
|
||||
@@ -347,6 +354,8 @@
|
||||
@@ -347,6 +353,8 @@
|
||||
PotionEffect var7 = (PotionEffect)var6.next();
|
||||
p_72356_1_.field_71135_a.func_72567_b(new Packet41EntityEffect(p_72356_1_.field_70157_k, var7));
|
||||
}
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
--- ../src-base/minecraft/net/minecraft/stats/StatFileWriter.java
|
||||
+++ ../src-work/minecraft/net/minecraft/stats/StatFileWriter.java
|
||||
@@ -6,6 +6,7 @@
|
||||
@@ -5,6 +5,7 @@
|
||||
import argo.jdom.JsonRootNode;
|
||||
import argo.jdom.JsonStringNode;
|
||||
import argo.saj.InvalidSyntaxException;
|
||||
import cpw.mods.fml.common.Side;
|
||||
+import cpw.mods.fml.common.asm.ReobfuscationMarker;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
@@ -16,6 +17,7 @@
|
||||
import net.minecraft.util.MD5String;
|
||||
import net.minecraft.util.Session;
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
package net.minecraft.tileentity;
|
||||
|
||||
+import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
+import java.util.logging.Level;
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
--- ../src-base/minecraft/net/minecraft/tileentity/TileEntityFurnace.java
|
||||
+++ ../src-work/minecraft/net/minecraft/tileentity/TileEntityFurnace.java
|
||||
@@ -2,6 +2,7 @@
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.minecraft.tileentity;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
+import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockFurnace;
|
||||
import net.minecraft.block.material.Material;
|
||||
@@ -287,7 +288,15 @@
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
--- ../src-base/minecraft/net/minecraft/util/CryptManager.java
|
||||
+++ ../src-work/minecraft/net/minecraft/util/CryptManager.java
|
||||
@@ -1,6 +1,7 @@
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.minecraft.util;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
+import cpw.mods.fml.common.asm.ReobfuscationMarker;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
@@ -36,6 +37,7 @@
|
||||
import org.bouncycastle.crypto.params.ParametersWithIV;
|
||||
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
--- ../src-base/minecraft/net/minecraft/util/StringTranslate.java
|
||||
+++ ../src-work/minecraft/net/minecraft/util/StringTranslate.java
|
||||
@@ -2,6 +2,8 @@
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.minecraft.util;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
+import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||
+
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
@@ -80,6 +82,7 @@
|
||||
@@ -80,6 +81,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +15,7 @@
|
|||
}
|
||||
|
||||
public void func_74810_a(String p_74810_1_)
|
||||
@@ -138,7 +141,6 @@
|
||||
@@ -138,7 +140,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,18 +1,16 @@
|
|||
--- ../src-base/minecraft/net/minecraft/world/WorldType.java
|
||||
+++ ../src-work/minecraft/net/minecraft/world/WorldType.java
|
||||
@@ -1,10 +1,25 @@
|
||||
package net.minecraft.world;
|
||||
+
|
||||
@@ -3,8 +3,23 @@
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
+import java.util.Arrays;
|
||||
+import java.util.Random;
|
||||
+import java.util.Set;
|
||||
+
|
||||
+import com.google.common.collect.ObjectArrays;
|
||||
+import com.google.common.collect.Sets;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
|
||||
+
|
||||
+import net.minecraft.world.*;
|
||||
+import net.minecraft.world.gen.*;
|
||||
+import net.minecraft.world.biome.*;
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
+
|
||||
+import java.util.Map;
|
||||
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.crash.CrashReportCategory;
|
||||
+import net.minecraft.nbt.NBTBase;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
|
Loading…
Reference in New Issue