--- a/net/minecraft/client/renderer/BufferBuilder.java
+++ b/net/minecraft/client/renderer/BufferBuilder.java
@@ -297,6 +297,7 @@
       }
 
       ByteBuffer bytebuffer = this.field_179001_a.slice();
+      bytebuffer.order(this.field_179001_a.order()); // FORGE: Fix incorrect byte order
       ((Buffer)this.field_179001_a).clear();
       return Pair.of(bufferbuilder$drawstate, bytebuffer);
    }
@@ -364,4 +365,15 @@
          this.field_179018_e = p_i225907_2_;
       }
    }
+
+   // Forge start
+   public void putBulkData(ByteBuffer buffer) {
+      func_181670_b(buffer.limit() + this.field_179011_q.func_177338_f());
+      ((Buffer)this.field_179001_a).position(this.field_178997_d * this.field_179011_q.func_177338_f());
+      this.field_179001_a.put(buffer);
+      this.field_178997_d += buffer.limit() / this.field_179011_q.func_177338_f();
+      this.field_227824_l_ += buffer.limit();
+   }
+
+   public VertexFormat getVertexFormat() { return this.field_179011_q; }
 }
