From 47948740e93f9de06d0ccb3a339bd2141bbc5d70 Mon Sep 17 00:00:00 2001
From: snowleo <schneeleo@gmail.com>
Date: Wed, 8 May 2013 12:04:50 +1000
Subject: [PATCH] Stage LocalLanguage to mc-dev

---
 CraftBukkit-Patches/0002-mc-dev-imports.patch | 149 +++++++++++++++++-
 1 file changed, 148 insertions(+), 1 deletion(-)

diff --git a/CraftBukkit-Patches/0002-mc-dev-imports.patch b/CraftBukkit-Patches/0002-mc-dev-imports.patch
index 5918ed521c..9224b341c5 100644
--- a/CraftBukkit-Patches/0002-mc-dev-imports.patch
+++ b/CraftBukkit-Patches/0002-mc-dev-imports.patch
@@ -1,9 +1,156 @@
-From d96080a04cb3f9a56af7f4666c8e88d9437b6184 Mon Sep 17 00:00:00 2001
+From 6d8f5f571b3642bee78a65ad7cf14e915d1386d3 Mon Sep 17 00:00:00 2001
 From: md_5 <md_5@live.com.au>
 Date: Wed, 10 Apr 2013 13:52:52 +1000
 Subject: [PATCH] mc-dev imports
 
 
+diff --git a/src/main/java/net/minecraft/server/LocaleLanguage.java b/src/main/java/net/minecraft/server/LocaleLanguage.java
+new file mode 100644
+index 0000000..d88f864
+--- /dev/null
++++ b/src/main/java/net/minecraft/server/LocaleLanguage.java
+@@ -0,0 +1,141 @@
++package net.minecraft.server;
++
++import java.io.BufferedReader;
++import java.io.File;
++import java.io.FileReader;
++import java.io.IOException;
++import java.io.InputStreamReader;
++import java.util.Enumeration;
++import java.util.IllegalFormatException;
++import java.util.Properties;
++import java.util.TreeMap;
++
++public class LocaleLanguage {
++
++    private static LocaleLanguage a = new LocaleLanguage("en_US");
++    private Properties b = new Properties();
++    private TreeMap c;
++    private TreeMap d = new TreeMap();
++    private String e;
++    private boolean f;
++
++    public LocaleLanguage(String s) {
++        this.e();
++        this.a(s, false);
++    }
++
++    public static LocaleLanguage a() {
++        return a;
++    }
++
++    private void e() {
++        TreeMap treemap = new TreeMap();
++
++        try {
++            BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(LocaleLanguage.class.getResourceAsStream("/lang/languages.txt"), "UTF-8"));
++
++            for (String s = bufferedreader.readLine(); s != null; s = bufferedreader.readLine()) {
++                String[] astring = s.trim().split("=");
++
++                if (astring != null && astring.length == 2) {
++                    treemap.put(astring[0], astring[1]);
++                }
++            }
++        } catch (IOException ioexception) {
++            ioexception.printStackTrace();
++            return;
++        }
++
++        this.c = treemap;
++        this.c.put("en_US", "English (US)");
++    }
++
++    public TreeMap b() {
++        return this.c;
++    }
++
++    private void a(Properties properties, String s) throws IOException {
++        BufferedReader bufferedreader = null;
++
++        if (this.d.containsKey(s)) {
++            bufferedreader = new BufferedReader(new FileReader((File) this.d.get(s)));
++        } else {
++            bufferedreader = new BufferedReader(new InputStreamReader(LocaleLanguage.class.getResourceAsStream("/lang/" + s + ".lang"), "UTF-8"));
++        }
++
++        for (String s1 = bufferedreader.readLine(); s1 != null; s1 = bufferedreader.readLine()) {
++            s1 = s1.trim();
++            if (!s1.startsWith("#")) {
++                String[] astring = s1.split("=");
++
++                if (astring != null && astring.length == 2) {
++                    properties.setProperty(astring[0], astring[1]);
++                }
++            }
++        }
++    }
++
++    public synchronized void a(String s, boolean flag) {
++        if (flag || !s.equals(this.e)) {
++            Properties properties = new Properties();
++
++            try {
++                this.a(properties, "en_US");
++            } catch (IOException ioexception) {
++                ;
++            }
++
++            this.f = false;
++            if (!"en_US".equals(s)) {
++                try {
++                    this.a(properties, s);
++                    Enumeration enumeration = properties.propertyNames();
++
++                    while (enumeration.hasMoreElements() && !this.f) {
++                        Object object = enumeration.nextElement();
++                        Object object1 = properties.get(object);
++
++                        if (object1 != null) {
++                            String s1 = object1.toString();
++
++                            for (int i = 0; i < s1.length(); ++i) {
++                                if (s1.charAt(i) >= 256) {
++                                    this.f = true;
++                                    break;
++                                }
++                            }
++                        }
++                    }
++                } catch (IOException ioexception1) {
++                    ioexception1.printStackTrace();
++                    return;
++                }
++            }
++
++            this.e = s;
++            this.b = properties;
++        }
++    }
++
++    public synchronized String a(String s) {
++        return this.b.getProperty(s, s);
++    }
++
++    public synchronized String a(String s, Object... aobject) {
++        String s1 = this.b.getProperty(s, s);
++
++        try {
++            return String.format(s1, aobject);
++        } catch (IllegalFormatException illegalformatexception) {
++            return "Format error: " + s1;
++        }
++    }
++
++    public synchronized boolean b(String s) {
++        return this.b.containsKey(s);
++    }
++
++    public synchronized String c(String s) {
++        return this.b.getProperty(s + ".name", "");
++    }
++}
 diff --git a/src/main/java/net/minecraft/server/NibbleArray.java b/src/main/java/net/minecraft/server/NibbleArray.java
 new file mode 100644
 index 0000000..5d75a54