--- a/net/minecraft/commands/arguments/blocks/ArgumentBlock.java
+++ b/net/minecraft/commands/arguments/blocks/ArgumentBlock.java
@@ -68,7 +68,7 @@
     private final StringReader reader;
     private final boolean forTesting;
     private final boolean allowNbt;
-    private final Map<IBlockState<?>, Comparable<?>> properties = Maps.newHashMap();
+    private final Map<IBlockState<?>, Comparable<?>> properties = Maps.newLinkedHashMap(); // CraftBukkit - stable
     private final Map<String, String> vagueProperties = Maps.newHashMap();
     private MinecraftKey id = new MinecraftKey("");
     @Nullable
@@ -276,7 +276,7 @@
         Iterator iterator = iblockstate.getPossibleValues().iterator();
 
         while (iterator.hasNext()) {
-            T t0 = (Comparable) iterator.next();
+            T t0 = (T) iterator.next(); // CraftBukkit - decompile error
 
             if (t0 instanceof Integer) {
                 Integer integer = (Integer) t0;
@@ -548,7 +548,7 @@
         Optional<T> optional = iblockstate.getValue(s);
 
         if (optional.isPresent()) {
-            this.state = (IBlockData) this.state.setValue(iblockstate, (Comparable) optional.get());
+            this.state = (IBlockData) this.state.setValue(iblockstate, (T) optional.get()); // CraftBukkit - decompile error
             this.properties.put(iblockstate, (Comparable) optional.get());
         } else {
             this.reader.setCursor(i);
@@ -584,7 +584,7 @@
     private static <T extends Comparable<T>> void appendProperty(StringBuilder stringbuilder, IBlockState<T> iblockstate, Comparable<?> comparable) {
         stringbuilder.append(iblockstate.getName());
         stringbuilder.append('=');
-        stringbuilder.append(iblockstate.getName(comparable));
+        stringbuilder.append(iblockstate.getName((T) comparable)); // CraftBukkit - decompile error
     }
 
     public static record a(IBlockData blockState, Map<IBlockState<?>, Comparable<?>> properties, @Nullable NBTTagCompound nbt) {
