Merge branch 'securityupdate'

This commit is contained in:
Christian 2012-12-17 11:46:47 -05:00
commit 289ce3339a
60 changed files with 385 additions and 268 deletions

View File

@ -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

View File

@ -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;
/**

View File

@ -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
{

View File

@ -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
{

View File

@ -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

View File

@ -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();
}
}

View File

@ -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;

View File

@ -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
{

View File

@ -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

View File

@ -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)

View File

@ -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
{

View File

@ -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
{

View File

@ -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())
{

View File

@ -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
{

View File

@ -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;
/**
*

View File

@ -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
{

View File

@ -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
{

View File

@ -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

View File

@ -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
{

View File

@ -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,33 +177,39 @@ 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;
}
classStream = classResource.openStream();
return readFully(classStream);
Attributes attr = man.getAttributes(path);
String sealed = null;
if (attr != null) {
sealed = attr.getValue(Name.SEALED);
}
finally
{
if (classStream != null)
{
try
{
classStream.close();
}
catch (IOException e)
{
// Swallow the close exception
}
if (sealed == null) {
if ((attr = man.getMainAttributes()) != null) {
sealed = attr.getValue(Name.SEALED);
}
}
return "true".equalsIgnoreCase(sealed);
}
private URLConnection findCodeSourceConnectionFor(String name)
{
URL res = findResource(name);
if (res != null)
{
try
{
return res.openConnection();
}
catch (IOException e)
{
throw new RuntimeException(e);
}
}
else
{
return null;
}
}
private byte[] runTransformers(String name, byte[] basicClass)
@ -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
}
}
}
}
}

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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})

View File

@ -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

View File

@ -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"

View File

@ -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_)
{

View File

@ -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()
{

View File

@ -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;

View File

@ -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;
}

View File

@ -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_)
@ -29,10 +29,10 @@
- {
- var9 = (float)var8 / 16.0F;
- var10 = p_78439_2_ + (p_78439_4_ - p_78439_2_) * var9 - 0.001953125F;
+ /* Gets the width/16 of the currently bound texture, used
+ /* Gets the width/16 of the currently bound texture, used
+ * to fix the side rendering issues on textures != 16 */
+ int tileSize = TextureFXManager.instance().getTextureDimensions(GL11.glGetInteger(GL11.GL_TEXTURE_BINDING_2D)).width / 16;
+
+
+ float tx = 1.0f / (32 * tileSize);
+ float tz = 1.0f / tileSize;
+

View File

@ -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;

View File

@ -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;

View File

@ -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)

View File

@ -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;

View File

@ -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;
@ -22,7 +22,7 @@
+ setup();
+ }
+
+ @Override
+ @Override
+ public void setup()
+ {
+ super.setup();

View File

@ -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;

View File

@ -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;
@ -29,7 +29,7 @@
this.field_76847_f = 1;
+ setup();
+ }
+
+
+ @Override
+ public void setup()
+ {

View File

@ -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)

View File

@ -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)

View File

@ -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 @@

View File

@ -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));

View File

@ -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

View File

@ -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()
{

View File

@ -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);
}

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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_)
{

View File

@ -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)

View File

@ -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\"");

View File

@ -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());

View File

@ -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 @@
}
}

View File

@ -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));
}

View File

@ -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;

View File

@ -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;

View File

@ -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 @@
}
}

View File

@ -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;

View File

@ -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 @@
}
}

View File

@ -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.*;
@ -22,7 +20,7 @@
{
+ public static final BiomeGenBase[] base11Biomes = new BiomeGenBase[] {BiomeGenBase.field_76769_d, BiomeGenBase.field_76767_f, BiomeGenBase.field_76770_e, BiomeGenBase.field_76780_h, BiomeGenBase.field_76772_c, BiomeGenBase.field_76768_g};
+ public static final BiomeGenBase[] base12Biomes = ObjectArrays.concat(base11Biomes, BiomeGenBase.field_76782_w);
+
+
public static final WorldType[] field_77139_a = new WorldType[16];
public static final WorldType field_77137_b = (new WorldType(0, "default", 1)).func_77129_f();
public static final WorldType field_77138_c = new WorldType(1, "flat");
@ -70,7 +68,7 @@
+ }
+
+ public IChunkProvider getChunkGenerator(World world, String generatorOptions)
+ {
+ {
+ return (this == field_77138_c ? new ChunkProviderFlat(world, world.func_72905_C(), world.func_72912_H().func_76089_r(), generatorOptions) : new ChunkProviderGenerate(world, world.func_72905_C(), world.func_72912_H().func_76089_r()));
+ }
+

View File

@ -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;