--- a/net/minecraft/server/GameRules.java
+++ b/net/minecraft/server/GameRules.java
@@ -94,7 +94,7 @@
     }
 
     public <T extends GameRules.GameRuleValue<T>> T get(GameRules.GameRuleKey<T> gamerules_gamerulekey) {
-        return (GameRules.GameRuleValue) this.H.get(gamerules_gamerulekey);
+        return (T) this.H.get(gamerules_gamerulekey); // CraftBukkit - decompile error
     }
 
     public NBTTagCompound a() {
@@ -122,7 +122,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) {
@@ -173,7 +173,7 @@
         }
 
         @Override
-        protected void setValue(String s) {
+        public void setValue(String s) { // PAIL - private->public
             this.a = Boolean.parseBoolean(s);
         }
 
@@ -223,7 +223,7 @@
         }
 
         @Override
-        protected void setValue(String s) {
+        public void setValue(String s) { // PAIL - private->public
             this.a = b(s);
         }
 
@@ -272,7 +272,7 @@
 
         }
 
-        protected abstract void setValue(String s);
+        public abstract void setValue(String s); // PAIL - private->public
 
         protected abstract String getValue();
 
@@ -302,7 +302,7 @@
         }
 
         public T getValue() {
-            return (GameRules.GameRuleValue) this.b.apply(this);
+            return this.b.apply(this); // CraftBukkit - decompile error
         }
     }
 
