--- a/net/minecraft/server/GameRules.java
+++ b/net/minecraft/server/GameRules.java
@@ -78,7 +78,7 @@
     }
 
     public <T extends GameRules.GameRuleValue<T>> T get(GameRules.GameRuleKey<T> gamerules_gamerulekey) {
-        return (GameRules.GameRuleValue) this.A.get(gamerules_gamerulekey);
+        return (T) this.A.get(gamerules_gamerulekey); // CraftBukkit - decompile error
     }
 
     public NBTTagCompound a() {
@@ -103,7 +103,7 @@
     }
 
     private static <T extends GameRules.GameRuleValue<T>> void a(GameRules.GameRuleVisitor gamerules_gamerulevisitor, GameRules.GameRuleKey<?> gamerules_gamerulekey, GameRules.GameRuleDefinition<?> gamerules_gameruledefinition) {
-        gamerules_gamerulevisitor.a(gamerules_gamerulekey, gamerules_gameruledefinition);
+        gamerules_gamerulevisitor.a((GameRules.GameRuleKey<T>) gamerules_gamerulekey, (GameRules.GameRuleDefinition<T>) gamerules_gameruledefinition); // CraftBukkit - decompile error
     }
 
     public boolean getBoolean(GameRules.GameRuleKey<GameRules.GameRuleBoolean> gamerules_gamerulekey) {
@@ -154,7 +154,7 @@
         }
 
         @Override
-        protected void setValue(String s) {
+        public void setValue(String s) { // PAIL - private->public
             this.a = Boolean.parseBoolean(s);
         }
 
@@ -204,7 +204,7 @@
         }
 
         @Override
-        protected void setValue(String s) {
+        public void setValue(String s) { // PAIL - private->public
             this.a = b(s);
         }
 
@@ -253,7 +253,7 @@
 
         }
 
-        protected abstract void setValue(String s);
+        public abstract void setValue(String s); // PAIL - private->public
 
         protected abstract String getValue();
 
@@ -283,7 +283,7 @@
         }
 
         public T getValue() {
-            return (GameRules.GameRuleValue) this.b.apply(this);
+            return this.b.apply(this); // CraftBukkit - decompile error
         }
     }