{"action":"created","comment":{"url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/comments/93813236","pull_request_review_id":14349868,"id":93813236,"diff_hunk":"@@ -0,0 +1,467 @@\n+/*\n+ * Minecraft Forge\n+ * Copyright (c) 2016.\n+ *\n+ * This library is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU Lesser General Public\n+ * License as published by the Free Software Foundation version 2.1\n+ * of the License.\n+ *\n+ * This library is distributed in the hope that it will be useful,\n+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+ * Lesser General Public License for more details.\n+ *\n+ * You should have received a copy of the GNU Lesser General Public\n+ * License along with this library; if not, write to the Free Software\n+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n+ */\n+\n+package net.minecraftforge.client;\n+\n+import java.nio.ByteBuffer;\n+\n+import org.lwjgl.opengl.GL11;\n+\n+import net.minecraft.client.Minecraft;\n+import net.minecraft.client.renderer.EntityRenderer;\n+import net.minecraft.client.renderer.GLAllocation;\n+import net.minecraft.client.renderer.GlStateManager;\n+import net.minecraft.client.renderer.OpenGlHelper;\n+import net.minecraft.client.renderer.Tessellator;\n+import net.minecraft.client.renderer.VertexBuffer;\n+import net.minecraft.client.renderer.texture.DynamicTexture;\n+import net.minecraft.client.renderer.vertex.DefaultVertexFormats;\n+import net.minecraft.client.renderer.vertex.VertexFormat;\n+import net.minecraft.client.resources.IReloadableResourceManager;\n+import net.minecraft.client.resources.IResourceManager;\n+import net.minecraft.client.resources.IResourceManagerReloadListener;\n+import net.minecraft.entity.Entity;\n+import net.minecraft.util.ResourceLocation;\n+import net.minecraft.util.math.Vec3d;\n+import net.minecraftforge.common.ForgeModContainer;\n+import net.minecraftforge.common.MinecraftForge;\n+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;\n+import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent;\n+import net.minecraftforge.fml.common.gameevent.TickEvent.Phase;\n+\n+public enum CloudRenderer implements IResourceManagerReloadListener\n+{\n+    INSTANCE;\n+\n+    // Shared constants.\n+    private static final float PX_SIZE = 1 / 256F;\n+\n+    // Building constants.\n+    private static final VertexFormat FORMAT = DefaultVertexFormats.POSITION_TEX_COLOR;\n+    private static final int HEIGHT = 4;\n+    private static final int FULL_WIDTH = 64;\n+    private static final int START = -FULL_WIDTH / 2;\n+    private static final int END = FULL_WIDTH / 2;\n+    private static final int SECTION_WIDTH = 8;\n+    private static final float INSET = 0.001F;\n+    private static final float ALPHA = 0.8F;\n+\n+    private final Minecraft mc = Minecraft.getMinecraft();\n+    private final ResourceLocation texture = new ResourceLocation(\"textures/environment/clouds.png\");\n+\n+    private int displayList = -1;\n+    private net.minecraft.client.renderer.vertex.VertexBuffer vbo;\n+    private boolean enabled = false;\n+    private int cloudMode = -1;\n+\n+    private DynamicTexture COLOR_TEX = null;\n+\n+    private int texW;\n+    private int texH;\n+\n+    private CloudRenderer()\n+    {\n+        ((IReloadableResourceManager) mc.getResourceManager()).registerReloadListener(this);\n+\n+        MinecraftForge.EVENT_BUS.register(this);\n+    }\n+\n+    private int getScale()\n+    {\n+        return cloudMode == 2 ? 12 : 8;\n+    }\n+\n+    private void vertices(VertexBuffer buffer)\n+    {\n+        boolean fancy = cloudMode == 2;    // Defines whether to hide all but the bottom.\n+\n+        float scale = getScale();\n+        float CULL_DIST = 2 * scale;\n+\n+        float bCol = fancy ? 0.7F : 1F;\n+\n+        buffer.begin(GL11.GL_QUADS, FORMAT);\n+\n+        // Create 1200 quads (with SECTION_WIDTH 8). SECTION_WIDTH defines width of slices and vertical faces.\n+        // With the minimum number (built above), the clouds nearest the player will still be fully fogged.\n+        float sectStart = START * scale;\n+        float sectEnd = END * scale;\n+        float sectStep = SECTION_WIDTH * scale;\n+        float sectPx = PX_SIZE / scale;\n+\n+        float sectX0 = sectStart;\n+        float sectX1;\n+\n+        for (sectX1 = sectStart + sectStep; sectX1 <= sectEnd; sectX1 += sectStep)\n+        {\n+            if (Float.isNaN(sectX0))\n+            {\n+                sectX0 = sectX1;\n+                continue;\n+            }\n+\n+            float sectZ0 = sectStart;\n+            float sectZ1;\n+\n+            for (sectZ1 = sectStart + sectStep; sectZ1 <= sectEnd; sectZ1 += sectStep)\n+            {\n+                float u0 = sectX0 * sectPx;\n+                float u1 = sectX1 * sectPx;\n+                float v0 = sectZ0 * sectPx;\n+                float v1 = sectZ1 * sectPx;\n+\n+                // Bottom\n+                buffer.pos(sectX0, 0, sectZ0).tex(u0, v0).color(bCol, bCol, bCol, ALPHA).endVertex();\n+                buffer.pos(sectX1, 0, sectZ0).tex(u1, v0).color(bCol, bCol, bCol, ALPHA).endVertex();\n+                buffer.pos(sectX1, 0, sectZ1).tex(u1, v1).color(bCol, bCol, bCol, ALPHA).endVertex();\n+                buffer.pos(sectX0, 0, sectZ1).tex(u0, v1).color(bCol, bCol, bCol, ALPHA).endVertex();\n+\n+                if (fancy)\n+                {\n+                    // Top\n+                    buffer.pos(sectX0, HEIGHT, sectZ0).tex(u0, v0).color(1, 1, 1, ALPHA).endVertex();\n+                    buffer.pos(sectX0, HEIGHT, sectZ1).tex(u0, v1).color(1, 1, 1, ALPHA).endVertex();\n+                    buffer.pos(sectX1, HEIGHT, sectZ1).tex(u1, v1).color(1, 1, 1, ALPHA).endVertex();\n+                    buffer.pos(sectX1, HEIGHT, sectZ0).tex(u1, v0).color(1, 1, 1, ALPHA).endVertex();\n+\n+                    float slice;\n+                    float sliceCoord0;\n+                    float sliceCoord1;\n+\n+                    for (slice = sectX0; slice < sectX1;)\n+                    {\n+                        sliceCoord0 = slice * sectPx;\n+                        sliceCoord1 = sliceCoord0 + PX_SIZE;\n+\n+                        // X sides\n+                        if (slice > -CULL_DIST)\n+                        {\n+                            slice += INSET;\n+                            buffer.pos(slice, 0,      sectZ1).tex(sliceCoord0, v1).color(0.9F, 0.9F, 0.9F, ALPHA).endVertex();\n+                            buffer.pos(slice, HEIGHT, sectZ1).tex(sliceCoord1, v1).color(0.9F, 0.9F, 0.9F, ALPHA).endVertex();\n+                            buffer.pos(slice, HEIGHT, sectZ0).tex(sliceCoord1, v0).color(0.9F, 0.9F, 0.9F, ALPHA).endVertex();\n+                            buffer.pos(slice, 0,      sectZ0).tex(sliceCoord0, v0).color(0.9F, 0.9F, 0.9F, ALPHA).endVertex();\n+                            slice -= INSET;\n+                        }\n+\n+                        slice += scale;\n+\n+                        if (slice <= CULL_DIST)\n+                        {\n+                            slice -= INSET;\n+                            buffer.pos(slice, 0,      sectZ0).tex(sliceCoord0, v0).color(0.9F, 0.9F, 0.9F, ALPHA).endVertex();\n+                            buffer.pos(slice, HEIGHT, sectZ0).tex(sliceCoord1, v0).color(0.9F, 0.9F, 0.9F, ALPHA).endVertex();\n+                            buffer.pos(slice, HEIGHT, sectZ1).tex(sliceCoord1, v1).color(0.9F, 0.9F, 0.9F, ALPHA).endVertex();\n+                            buffer.pos(slice, 0,      sectZ1).tex(sliceCoord0, v1).color(0.9F, 0.9F, 0.9F, ALPHA).endVertex();\n+                            slice += INSET;\n+                        }\n+                    }\n+\n+                    for (slice = sectZ0; slice < sectZ1;)\n+                    {\n+                        sliceCoord0 = slice * sectPx;\n+                        sliceCoord1 = sliceCoord0 + PX_SIZE;\n+\n+                        // Z sides\n+                        if (slice > -CULL_DIST)\n+                        {\n+                            slice += INSET;\n+                            buffer.pos(sectX0, 0,      slice).tex(u0, sliceCoord0).color(0.8F, 0.8F, 0.8F, ALPHA).endVertex();\n+                            buffer.pos(sectX0, HEIGHT, slice).tex(u0, sliceCoord1).color(0.8F, 0.8F, 0.8F, ALPHA).endVertex();\n+                            buffer.pos(sectX1, HEIGHT, slice).tex(u1, sliceCoord1).color(0.8F, 0.8F, 0.8F, ALPHA).endVertex();\n+                            buffer.pos(sectX1, 0,      slice).tex(u1, sliceCoord0).color(0.8F, 0.8F, 0.8F, ALPHA).endVertex();\n+                            slice -= INSET;\n+                        }\n+\n+                        slice += scale;\n+\n+                        if (slice <= CULL_DIST)\n+                        {\n+                            slice -= INSET;\n+                            buffer.pos(sectX1, 0,      slice).tex(u1, sliceCoord0).color(0.8F, 0.8F, 0.8F, ALPHA).endVertex();\n+                            buffer.pos(sectX1, HEIGHT, slice).tex(u1, sliceCoord1).color(0.8F, 0.8F, 0.8F, ALPHA).endVertex();\n+                            buffer.pos(sectX0, HEIGHT, slice).tex(u0, sliceCoord1).color(0.8F, 0.8F, 0.8F, ALPHA).endVertex();\n+                            buffer.pos(sectX0, 0,      slice).tex(u0, sliceCoord0).color(0.8F, 0.8F, 0.8F, ALPHA).endVertex();\n+                            slice += INSET;\n+                        }\n+                    }\n+                }\n+\n+                sectZ0 = sectZ1;\n+            }\n+\n+            sectX0 = sectX1;\n+        }\n+    }\n+\n+    private void dispose()\n+    {\n+        if (vbo != null)\n+        {\n+            vbo.deleteGlBuffers();\n+            vbo = null;\n+        }\n+        if (displayList >= 0)\n+        {\n+            GLAllocation.deleteDisplayLists(displayList);\n+            displayList = -1;\n+        }\n+    }\n+\n+    private void build()\n+    {\n+        Tessellator tess = Tessellator.getInstance();\n+        VertexBuffer buffer = tess.getBuffer();\n+\n+        if (OpenGlHelper.useVbo())\n+            vbo = new net.minecraft.client.renderer.vertex.VertexBuffer(FORMAT);\n+        else\n+            GlStateManager.glNewList(displayList = GLAllocation.generateDisplayLists(1), GL11.GL_COMPILE);\n+\n+        vertices(buffer);\n+\n+        if (OpenGlHelper.useVbo())\n+        {\n+            buffer.finishDrawing();\n+            buffer.reset();\n+            vbo.bufferData(buffer.getByteBuffer());\n+        }\n+        else\n+        {\n+            tess.draw();\n+            GlStateManager.glEndList();\n+        }\n+    }\n+\n+    private int fullCoord(double coord, int scale)\n+    {   // Corrects misalignment of UV offset when on negative coords.\n+        return ((int) coord / scale) - (coord < 0 ? 1 : 0);\n+    }\n+\n+    @SubscribeEvent\n+    public void checkSettings(ClientTickEvent event)\n+    {\n+        if (event.phase == Phase.END)\n+        {\n+            boolean newEnabled = ForgeModContainer.forgeCloudsEnabled\n+                    && mc.gameSettings.shouldRenderClouds() != 0\n+                    && mc.theWorld != null\n+                    && mc.theWorld.provider.isSurfaceWorld();\n+    \n+            if (newEnabled != enabled)\n+            {\n+                if (newEnabled)\n+                    build();\n+                else\n+                    dispose();\n+                enabled = newEnabled;\n+            }\n+    \n+            if (enabled)\n+            {\n+                if (mc.gameSettings.shouldRenderClouds() != cloudMode)\n+                {\n+                    cloudMode = mc.gameSettings.shouldRenderClouds();\n+                    dispose();\n+                    build();\n+                }\n+                \n+                if (OpenGlHelper.useVbo() ? vbo == null : displayList < 0)\n+                {\n+                    dispose();\n+                    build();\n+                }\n+            }\n+        }\n+    }\n+\n+    public boolean render(int cloudTicks, float partialTicks)\n+    {\n+        if (OpenGlHelper.useVbo() ? vbo == null : displayList < 0)\n+            return false;\n+\n+        Entity entity = mc.getRenderViewEntity();\n+\n+        double totalOffset = cloudTicks + partialTicks;\n+\n+        double x = entity.prevPosX + (entity.posX - entity.prevPosX) * partialTicks\n+                + totalOffset * 0.03;\n+        double y = mc.theWorld.provider.getCloudHeight()\n+                - (entity.lastTickPosY + (entity.posY - entity.lastTickPosY) * partialTicks)\n+                + 0.33;\n+        double z = entity.prevPosZ + (entity.posZ - entity.prevPosZ) * partialTicks;\n+\n+        if (cloudMode == 2)\n+            z += 0.33 * getScale();\n+\n+        int scale = getScale();\n+\n+        // Integer UVs to translate the texture matrix by.\n+        int offU = fullCoord(x, scale);\n+        int offV = fullCoord(z, scale);\n+\n+        GlStateManager.pushMatrix();\n+\n+        // Translate by the remainder after the UV offset.\n+        GlStateManager.translate((offU * scale) - x, y, (offV * scale) - z);\n+\n+        // Modulo to prevent texture samples becoming inaccurate at extreme offsets.\n+        offU = Math.floorMod(offU, texW);\n+        offV = Math.floorMod(offV, texH);","path":"src/main/java/net/minecraftforge/client/CloudRenderer.java","position":326,"original_position":326,"commit_id":"f43958567f6d33d4daeb361c615323992c565a71","original_commit_id":"f43958567f6d33d4daeb361c615323992c565a71","user":{"login":"mezz","id":916092,"avatar_url":"https://avatars.githubusercontent.com/u/916092?v=3","gravatar_id":"","url":"https://api.github.com/users/mezz","html_url":"https://github.com/mezz","followers_url":"https://api.github.com/users/mezz/followers","following_url":"https://api.github.com/users/mezz/following{/other_user}","gists_url":"https://api.github.com/users/mezz/gists{/gist_id}","starred_url":"https://api.github.com/users/mezz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mezz/subscriptions","organizations_url":"https://api.github.com/users/mezz/orgs","repos_url":"https://api.github.com/users/mezz/repos","events_url":"https://api.github.com/users/mezz/events{/privacy}","received_events_url":"https://api.github.com/users/mezz/received_events","type":"User","site_admin":false},"body":"Right here @liach ","created_at":"2016-12-24T05:52:59Z","updated_at":"2016-12-24T05:52:59Z","html_url":"https://github.com/MinecraftForge/MinecraftForge/pull/3559#discussion_r93813236","pull_request_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/3559","_links":{"self":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/comments/93813236"},"html":{"href":"https://github.com/MinecraftForge/MinecraftForge/pull/3559#discussion_r93813236"},"pull_request":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/3559"}}},"pull_request":{"url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/3559","id":99200372,"html_url":"https://github.com/MinecraftForge/MinecraftForge/pull/3559","diff_url":"https://github.com/MinecraftForge/MinecraftForge/pull/3559.diff","patch_url":"https://github.com/MinecraftForge/MinecraftForge/pull/3559.patch","issue_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/issues/3559","number":3559,"state":"open","locked":false,"title":"Added a cloud renderer that uploads geometry to the GPU.","user":{"login":"Zaggy1024","id":3149592,"avatar_url":"https://avatars.githubusercontent.com/u/3149592?v=3","gravatar_id":"","url":"https://api.github.com/users/Zaggy1024","html_url":"https://github.com/Zaggy1024","followers_url":"https://api.github.com/users/Zaggy1024/followers","following_url":"https://api.github.com/users/Zaggy1024/following{/other_user}","gists_url":"https://api.github.com/users/Zaggy1024/gists{/gist_id}","starred_url":"https://api.github.com/users/Zaggy1024/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Zaggy1024/subscriptions","organizations_url":"https://api.github.com/users/Zaggy1024/orgs","repos_url":"https://api.github.com/users/Zaggy1024/repos","events_url":"https://api.github.com/users/Zaggy1024/events{/privacy}","received_events_url":"https://api.github.com/users/Zaggy1024/received_events","type":"User","site_admin":false},"body":"#3188 updated to 1.11.x. All comments on that PR have been addressed.\r\n\r\nCode in CloudRenderer is cleaned up a bit to rebuild the VBOs/display lists as little as possible, in a client tick handler rather than the renderer.\r\n\r\nTo avoid adding unnecessary profiling lines EntityRenderer, ProfilerEnableEvent was added to temporarily force on the profiler to time the rendering of the clouds. This can also be reused for other profiling test mods in the future, if any such tests are needed.","created_at":"2016-12-23T03:49:30Z","updated_at":"2016-12-24T05:52:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b1e3e7ad484a45ad8694c1e56ff061f33d6fc6fc","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/3559/commits","review_comments_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/3559/comments","review_comment_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/comments{/number}","comments_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/issues/3559/comments","statuses_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/statuses/f43958567f6d33d4daeb361c615323992c565a71","head":{"label":"Zaggy1024:fastclouds1.11.x","ref":"fastclouds1.11.x","sha":"f43958567f6d33d4daeb361c615323992c565a71","user":{"login":"Zaggy1024","id":3149592,"avatar_url":"https://avatars.githubusercontent.com/u/3149592?v=3","gravatar_id":"","url":"https://api.github.com/users/Zaggy1024","html_url":"https://github.com/Zaggy1024","followers_url":"https://api.github.com/users/Zaggy1024/followers","following_url":"https://api.github.com/users/Zaggy1024/following{/other_user}","gists_url":"https://api.github.com/users/Zaggy1024/gists{/gist_id}","starred_url":"https://api.github.com/users/Zaggy1024/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Zaggy1024/subscriptions","organizations_url":"https://api.github.com/users/Zaggy1024/orgs","repos_url":"https://api.github.com/users/Zaggy1024/repos","events_url":"https://api.github.com/users/Zaggy1024/events{/privacy}","received_events_url":"https://api.github.com/users/Zaggy1024/received_events","type":"User","site_admin":false},"repo":{"id":34411414,"name":"MinecraftForge","full_name":"Zaggy1024/MinecraftForge","owner":{"login":"Zaggy1024","id":3149592,"avatar_url":"https://avatars.githubusercontent.com/u/3149592?v=3","gravatar_id":"","url":"https://api.github.com/users/Zaggy1024","html_url":"https://github.com/Zaggy1024","followers_url":"https://api.github.com/users/Zaggy1024/followers","following_url":"https://api.github.com/users/Zaggy1024/following{/other_user}","gists_url":"https://api.github.com/users/Zaggy1024/gists{/gist_id}","starred_url":"https://api.github.com/users/Zaggy1024/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Zaggy1024/subscriptions","organizations_url":"https://api.github.com/users/Zaggy1024/orgs","repos_url":"https://api.github.com/users/Zaggy1024/repos","events_url":"https://api.github.com/users/Zaggy1024/events{/privacy}","received_events_url":"https://api.github.com/users/Zaggy1024/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Zaggy1024/MinecraftForge","description":"Modifications to the Minecraft base files to assist in compatibility between mods.","fork":true,"url":"https://api.github.com/repos/Zaggy1024/MinecraftForge","forks_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/forks","keys_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/teams","hooks_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/hooks","issue_events_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/issues/events{/number}","events_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/events","assignees_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/assignees{/user}","branches_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/branches{/branch}","tags_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/tags","blobs_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/git/refs{/sha}","trees_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/statuses/{sha}","languages_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/languages","stargazers_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/stargazers","contributors_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/contributors","subscribers_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/subscribers","subscription_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/subscription","commits_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/commits{/sha}","git_commits_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/git/commits{/sha}","comments_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/comments{/number}","issue_comment_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/issues/comments{/number}","contents_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/contents/{+path}","compare_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/merges","archive_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/downloads","issues_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/issues{/number}","pulls_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/pulls{/number}","milestones_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/milestones{/number}","notifications_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/labels{/name}","releases_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/releases{/id}","deployments_url":"https://api.github.com/repos/Zaggy1024/MinecraftForge/deployments","created_at":"2015-04-22T19:33:02Z","updated_at":"2015-05-22T20:28:03Z","pushed_at":"2016-12-23T03:44:11Z","git_url":"git://github.com/Zaggy1024/MinecraftForge.git","ssh_url":"git@github.com:Zaggy1024/MinecraftForge.git","clone_url":"https://github.com/Zaggy1024/MinecraftForge.git","svn_url":"https://github.com/Zaggy1024/MinecraftForge","homepage":"","size":88495,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"MinecraftForge:1.11.x","ref":"1.11.x","sha":"5165dc52bf13321c72d8beb7dd574262912042bd","user":{"login":"MinecraftForge","id":1390178,"avatar_url":"https://avatars.githubusercontent.com/u/1390178?v=3","gravatar_id":"","url":"https://api.github.com/users/MinecraftForge","html_url":"https://github.com/MinecraftForge","followers_url":"https://api.github.com/users/MinecraftForge/followers","following_url":"https://api.github.com/users/MinecraftForge/following{/other_user}","gists_url":"https://api.github.com/users/MinecraftForge/gists{/gist_id}","starred_url":"https://api.github.com/users/MinecraftForge/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MinecraftForge/subscriptions","organizations_url":"https://api.github.com/users/MinecraftForge/orgs","repos_url":"https://api.github.com/users/MinecraftForge/repos","events_url":"https://api.github.com/users/MinecraftForge/events{/privacy}","received_events_url":"https://api.github.com/users/MinecraftForge/received_events","type":"Organization","site_admin":false},"repo":{"id":3301400,"name":"MinecraftForge","full_name":"MinecraftForge/MinecraftForge","owner":{"login":"MinecraftForge","id":1390178,"avatar_url":"https://avatars.githubusercontent.com/u/1390178?v=3","gravatar_id":"","url":"https://api.github.com/users/MinecraftForge","html_url":"https://github.com/MinecraftForge","followers_url":"https://api.github.com/users/MinecraftForge/followers","following_url":"https://api.github.com/users/MinecraftForge/following{/other_user}","gists_url":"https://api.github.com/users/MinecraftForge/gists{/gist_id}","starred_url":"https://api.github.com/users/MinecraftForge/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MinecraftForge/subscriptions","organizations_url":"https://api.github.com/users/MinecraftForge/orgs","repos_url":"https://api.github.com/users/MinecraftForge/repos","events_url":"https://api.github.com/users/MinecraftForge/events{/privacy}","received_events_url":"https://api.github.com/users/MinecraftForge/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/MinecraftForge/MinecraftForge","description":"Modifications to the Minecraft base files to assist in compatibility between mods.","fork":false,"url":"https://api.github.com/repos/MinecraftForge/MinecraftForge","forks_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/forks","keys_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/keys{/key_id}","collaborators_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/teams","hooks_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/hooks","issue_events_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/issues/events{/number}","events_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/events","assignees_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/assignees{/user}","branches_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/branches{/branch}","tags_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/tags","blobs_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/git/refs{/sha}","trees_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/git/trees{/sha}","statuses_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/statuses/{sha}","languages_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/languages","stargazers_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/stargazers","contributors_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/contributors","subscribers_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/subscribers","subscription_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/subscription","commits_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/commits{/sha}","git_commits_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/git/commits{/sha}","comments_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/comments{/number}","issue_comment_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/issues/comments{/number}","contents_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/contents/{+path}","compare_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/compare/{base}...{head}","merges_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/merges","archive_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/downloads","issues_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/issues{/number}","pulls_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls{/number}","milestones_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/milestones{/number}","notifications_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/labels{/name}","releases_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/releases{/id}","deployments_url":"https://api.github.com/repos/MinecraftForge/MinecraftForge/deployments","created_at":"2012-01-30T01:35:01Z","updated_at":"2016-12-23T21:43:50Z","pushed_at":"2016-12-24T03:29:13Z","git_url":"git://github.com/MinecraftForge/MinecraftForge.git","ssh_url":"git@github.com:MinecraftForge/MinecraftForge.git","clone_url":"https://github.com/MinecraftForge/MinecraftForge.git","svn_url":"https://github.com/MinecraftForge/MinecraftForge","homepage":"","size":89082,"stargazers_count":1661,"watchers_count":1661,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":852,"mirror_url":null,"open_issues_count":255,"forks":852,"open_issues":255,"watchers":1661,"default_branch":"1.11.x"}},"_links":{"self":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/3559"},"html":{"href":"https://github.com/MinecraftForge/MinecraftForge/pull/3559"},"issue":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/issues/3559"},"comments":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/issues/3559/comments"},"review_comments":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/3559/comments"},"review_comment":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/pulls/3559/commits"},"statuses":{"href":"https://api.github.com/repos/MinecraftForge/MinecraftForge/statuses/f43958567f6d33d4daeb361c615323992c565a71"}}}}
{"actor":{"display_login":"mezz"}}