--- ../src-base/minecraft/net/minecraft/client/gui/achievement/GuiAchievements.java
+++ ../src-work/minecraft/net/minecraft/client/gui/achievement/GuiAchievements.java
@@ -24,6 +24,9 @@
 import net.minecraftforge.fml.relauncher.Side;
 import net.minecraftforge.fml.relauncher.SideOnly;
 import org.lwjgl.input.Mouse;
+import java.util.LinkedList;
+import java.util.List;
+import net.minecraftforge.common.AchievementPage;
 
 @SideOnly(Side.CLIENT)
 public class GuiAchievements extends GuiScreen implements IProgressMeter
@@ -50,6 +53,10 @@
     private boolean field_146558_F = true;
     private static final String __OBFID = "CL_00000722";
 
+    private int currentPage = -1;
+    private GuiButton button;
+    private LinkedList<Achievement> minecraftAchievements = new LinkedList<Achievement>();
+
     public GuiAchievements(GuiScreen p_i45026_1_, StatFileWriter p_i45026_2_)
     {
         this.field_146562_a = p_i45026_1_;
@@ -58,6 +65,14 @@
         short short2 = 141;
         this.field_146569_s = this.field_146567_u = this.field_146565_w = (double)(AchievementList.field_76004_f.field_75993_a * 24 - short1 / 2 - 12);
         this.field_146568_t = this.field_146566_v = this.field_146573_x = (double)(AchievementList.field_76004_f.field_75991_b * 24 - short2 / 2);
+        minecraftAchievements.clear();
+        for (Object achievement : AchievementList.field_76007_e)
+        {
+            if (!AchievementPage.isAchievementInPages((Achievement)achievement))
+            {
+                minecraftAchievements.add((Achievement)achievement);
+            }
+        }
     }
 
     public void func_73866_w_()
@@ -65,6 +80,7 @@
         this.field_146297_k.func_147114_u().func_147297_a(new C16PacketClientStatus(C16PacketClientStatus.EnumState.REQUEST_STATS));
         this.field_146292_n.clear();
         this.field_146292_n.add(new GuiOptionButton(1, this.field_146294_l / 2 + 24, this.field_146295_m / 2 + 74, 80, 20, I18n.func_135052_a("gui.done", new Object[0])));
+        this.field_146292_n.add(button = new GuiButton(2, (field_146294_l - field_146555_f) / 2 + 24, field_146295_m / 2 + 74, 125, 20, AchievementPage.getTitle(currentPage)));
     }
 
     protected void func_146284_a(GuiButton p_146284_1_) throws IOException
@@ -75,6 +91,16 @@
             {
                 this.field_146297_k.func_147108_a(this.field_146562_a);
             }
+
+            if (p_146284_1_.field_146127_k == 2)
+            {
+                currentPage++;
+                if (currentPage >= AchievementPage.getAchievementPages().size())
+                {
+                    currentPage = -1;
+                }
+                this.button.field_146126_j = AchievementPage.getTitle(currentPage);
+            }
         }
     }
 
@@ -341,11 +367,12 @@
         int i4;
         int l4;
 
-        for (i3 = 0; i3 < AchievementList.field_76007_e.size(); ++i3)
+        List<Achievement> achievementList = (currentPage == -1 ? minecraftAchievements : AchievementPage.getAchievementPage(currentPage).getAchievements());
+        for (i3 = 0; i3 < achievementList.size(); ++i3)
         {
-            Achievement achievement1 = (Achievement)AchievementList.field_76007_e.get(i3);
+            Achievement achievement1 = achievementList.get(i3);
 
-            if (achievement1.field_75992_c != null)
+            if (achievement1.field_75992_c != null && achievementList.contains(achievement1.field_75992_c))
             {
                 j3 = achievement1.field_75993_a * 24 - k + 11;
                 k3 = achievement1.field_75991_b * 24 - l + 11;
@@ -401,9 +428,9 @@
         int i5;
         int j5;
 
-        for (k3 = 0; k3 < AchievementList.field_76007_e.size(); ++k3)
+        for (k3 = 0; k3 < achievementList.size(); ++k3)
         {
-            Achievement achievement2 = (Achievement)AchievementList.field_76007_e.get(k3);
+            Achievement achievement2 = (Achievement)achievementList.get(k3);
             l4 = achievement2.field_75993_a * 24 - k;
             i5 = achievement2.field_75991_b * 24 - l;
 
@@ -445,6 +472,7 @@
 
                 this.field_146297_k.func_110434_K().func_110577_a(field_146561_C);
 
+                GlStateManager.func_179147_l(); // Forge: Specifically enable blend because it is needed here. And we fix Generic RenderItem's leakage of it.
                 if (achievement2.func_75984_f())
                 {
                     this.func_73729_b(l4 - 2, i5 - 2, 26, 202, 26, 26);
@@ -453,6 +481,7 @@
                 {
                     this.func_73729_b(l4 - 2, i5 - 2, 0, 202, 26, 26);
                 }
+                GlStateManager.func_179084_k(); //Forge: Cleanup states we set.
 
                 if (!this.field_146556_E.func_77442_b(achievement2))
                 {
@@ -461,7 +490,7 @@
                     this.field_146296_j.func_175039_a(false);
                 }
 
-                GlStateManager.func_179145_e();
+                GlStateManager.func_179140_f(); //Forge: Make sure Lighting is disabled. Fixes MC-33065
                 GlStateManager.func_179089_o();
                 this.field_146296_j.func_180450_b(achievement2.field_75990_d, l4 + 3, i5 + 3);
                 GlStateManager.func_179112_b(770, 771);
