<!-- 
RSS generated by JIRA (9.12.2#9120002-sha1:301bf498dd45d800842af0b84230f1bb58606c13) at Sun Jan 12 12:23:30 UTC 2025

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Mojang Studios Jira</title>
    <link>https://bugs.mojang.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en</language>    <build-info>
        <version>9.12.2</version>
        <build-number>9120002</build-number>
        <build-date>10-01-2024</build-date>
    </build-info>


<item>
            <title>[MC-10176] Oak/Dark Oak Tree Branches can replace all solid blocks (including Bedrock and Barrier)</title>
                <link>https://bugs.mojang.com/browse/MC-10176</link>
                <project id="10400" key="MC">Minecraft: Java Edition</project>
                    <description>&lt;p&gt;To reproduce: &lt;/p&gt;

&lt;p&gt;1 Build &quot;tube&quot; of any solid block as high as you want, with &quot;open edges&quot;&lt;/p&gt;

&lt;p&gt;2 Plant sapling and grow it with bone meal.&lt;/p&gt;

&lt;p&gt;3 Remove leaves to see, where wood replaced the solid blocks of the tube.&lt;/p&gt;


&lt;p&gt;I suppose the kind of the solid block does not matter.&lt;/p&gt;</description>
                <environment></environment>
        <key id="24049">MC-10176</key>
            <summary>Oak/Dark Oak Tree Branches can replace all solid blocks (including Bedrock and Barrier)</summary>
                <type id="1" iconUrl="https://bugs.mojang.com/secure/viewavatar?size=xsmall&amp;avatarId=18903&amp;avatarType=issuetype">Bug</type>
                                    <status id="5" iconUrl="https://bugs.mojang.com/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="mcmicgera">Michael Schiffner</reporter>
                        <labels>
                    </labels>
                <created>Sat, 23 Feb 2013 01:14:42 +0100</created>
                <updated>Tue, 2 Feb 2021 13:57:25 +0100</updated>
                            <resolved>Fri, 16 Jan 2015 19:51:21 +0100</resolved>
                                    <version>Snapshot 13w07a</version>
                    <version>Snapshot 13w09a</version>
                    <version>Snapshot 13w09b</version>
                    <version>Snapshot 13w11a</version>
                    <version>Minecraft 1.6.4</version>
                    <version>Minecraft 13w42b</version>
                    <version>Minecraft 13w43a</version>
                    <version>Minecraft 1.7.1</version>
                    <version>Minecraft 1.7.2</version>
                    <version>Minecraft 1.7.4</version>
                    <version>Minecraft 14w02b</version>
                    <version>Minecraft 14w02c</version>
                    <version>Minecraft 14w03a</version>
                    <version>Minecraft 14w03b</version>
                    <version>Minecraft 14w08a</version>
                    <version>Minecraft 1.7.5</version>
                    <version>Minecraft 14w10b</version>
                    <version>Minecraft 14w10c</version>
                    <version>Minecraft 14w11b</version>
                    <version>Minecraft 1.7.6-pre1</version>
                    <version>Minecraft 1.7.10</version>
                    <version>Minecraft 14w30c</version>
                    <version>Minecraft 14w31a</version>
                    <version>Minecraft 14w32d</version>
                    <version>Minecraft 14w33c</version>
                    <version>Minecraft 14w34a</version>
                    <version>Minecraft 14w34b</version>
                    <version>Minecraft 14w34c</version>
                    <version>Minecraft 14w34d</version>
                    <version>Minecraft 1.8</version>
                    <version>Minecraft 1.8.1-pre1</version>
                    <version>Minecraft 1.8.1-pre3</version>
                    <version>Minecraft 1.8.1</version>
                                    <fixVersion>Minecraft 1.8.2-pre4</fixVersion>
                                                        <votes>31</votes>
                                    <watches>17</watches>
                                                                            <comments>
                            <comment id="216496" author="fm22" created="Tue, 20 Jan 2015 22:32:34 +0100"  >&lt;p&gt;Sorry. It just didn&apos;t have the intermediate versions of the affects versions page and the comment confirming it had been fixed was:&lt;br/&gt;
Fixed in 1.8.2-pre4, possibly earlier.&lt;br/&gt;
Notice the &apos;possibly earlier&apos;.&lt;/p&gt;</comment>
                            <comment id="216493" author="kumasasa" created="Tue, 20 Jan 2015 22:10:24 +0100"  >&lt;p&gt;&lt;a href=&quot;https://bugs.mojang.com/secure/ViewProfile.jspa?name=FM22&quot; class=&quot;user-hover&quot; rel=&quot;FM22&quot;&gt;FM22&lt;/a&gt;, see at the top of this ticket, there is clearly written:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Status: Resolved &lt;br/&gt;
Resolution: Fixed&lt;br/&gt;
Fix Version/s: &lt;b&gt;Minecraft 1.8.2-pre4&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;
</comment>
                            <comment id="216490" author="fm22" created="Tue, 20 Jan 2015 22:06:01 +0100"  >&lt;p&gt;present in pre 3...&lt;br/&gt;
It was fixed in 1.8.2 PRE 4&lt;/p&gt;</comment>
                            <comment id="216489" author="fm22" created="Tue, 20 Jan 2015 22:02:07 +0100"  >&lt;p&gt;present in pre 2...&lt;/p&gt;</comment>
                            <comment id="216488" author="fm22" created="Tue, 20 Jan 2015 22:00:55 +0100"  >&lt;p&gt;present in pre 1...&lt;/p&gt;</comment>
                            <comment id="216487" author="fm22" created="Tue, 20 Jan 2015 21:52:43 +0100"  >&lt;p&gt;Somehow, I dont think Mojang want to admit the version that has the bug fixed.&lt;/p&gt;</comment>
                            <comment id="216110" author="redstonehelper" created="Fri, 16 Jan 2015 19:14:03 +0100"  >&lt;p&gt;Fixed in 1.8.2-pre4, possibly earlier.&lt;/p&gt;</comment>
                            <comment id="216043" author="pokechu22" created="Fri, 16 Jan 2015 01:22:11 +0100"  >&lt;p&gt;This also occurs with 2x2 jungle trees if you have a 3 block padding.&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&#9608;&#9608;&lt;/tt&gt;: bedrock&lt;br/&gt;
&lt;tt&gt;&#9618;&#9618;&lt;/tt&gt;: any block on bottom layer; air on all others&lt;br/&gt;
&lt;tt&gt;&#9619;&#9619;&lt;/tt&gt;: dirt/sapling/air depending on layer.&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;&#9608;&#9608; &#9608;&#9608; &#9608;&#9608; &#9608;&#9608; &#9608;&#9608; &#9608;&#9608; &#9608;&#9608; &#9608;&#9608; &#9608;&#9608; &#9608;&#9608;
&#9608;&#9608; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9608;&#9608;
&#9608;&#9608; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9608;&#9608;
&#9608;&#9608; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9608;&#9608;
&#9608;&#9608; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9619;&#9619; &#9619;&#9619; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9608;&#9608;
&#9608;&#9608; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9619;&#9619; &#9619;&#9619; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9608;&#9608;
&#9608;&#9608; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9608;&#9608;
&#9608;&#9608; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9608;&#9608;
&#9608;&#9608; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9618;&#9618; &#9608;&#9608;
&#9608;&#9608; &#9608;&#9608; &#9608;&#9608; &#9608;&#9608; &#9608;&#9608; &#9608;&#9608; &#9608;&#9608; &#9608;&#9608; &#9608;&#9608; &#9608;&#9608;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;With this structure bedrock in the walls will be replaced by wood in some of the jungle tree branches.&lt;/p&gt;</comment>
                            <comment id="210961" author="fenhl" created="Sun, 7 Dec 2014 07:29:35 +0100"  >&lt;p&gt;&lt;b&gt;Affects 1.8.1&lt;/b&gt;, at least for dark oak.&lt;/p&gt;</comment>
                            <comment id="193735" author="torabi" created="Mon, 25 Aug 2014 15:26:53 +0200"  >&lt;p&gt;I don&apos;t think there&apos;s any legitimate reason to break blocks that are specifically designed to not be broken by the player. Bedrock and Barriers are there to give server admins or map creators a way of walling off sections of the world. It hurts gameplay or servers if they can&apos;t rely on that.&lt;/p&gt;

&lt;p&gt;But really, I hope this gets fixed because it can break redstone machinery, most particularly automatic tree farms. Having a tree destroy your pistons or dispensers is a real pain.&lt;/p&gt;</comment>
                            <comment id="191392" author="noproct" created="Wed, 20 Aug 2014 18:10:38 +0200"  >&lt;p&gt;In my opinion, breaking bedrock should be implemented as a feature, since it adds gameplay. Literaly 50% of the nether is not accessible without breaking bedrock. And it would be &quot;unfair &quot; towards players who haven&apos;t broken through bedrock in their world before it gets fixed.&lt;/p&gt;</comment>
                            <comment id="187552" author="cloud100saber" created="Mon, 11 Aug 2014 19:10:27 +0200"  >&lt;p&gt;I found it with Jungle trees in 14w32d&lt;/p&gt;</comment>
                            <comment id="184834" author="mryayayify" created="Wed, 6 Aug 2014 02:46:38 +0200"  >&lt;p&gt;confirmed for 14w31a&lt;/p&gt;</comment>
                            <comment id="181518" author="agglutinator" created="Tue, 29 Jul 2014 18:22:35 +0200"  >&lt;p&gt;confirmed for 14w30c&lt;/p&gt;</comment>
                            <comment id="149787" author="garyclosse" created="Thu, 3 Apr 2014 18:21:42 +0200"  >&lt;p&gt;Confirmed for 1.7.6pre&lt;/p&gt;</comment>
                            <comment id="147218" author="archaicchains" created="Sat, 15 Mar 2014 03:15:33 +0100"  >&lt;p&gt;Bug also appears in 14w11b.&lt;/p&gt;</comment>
                            <comment id="145359" author="fumblerx" created="Fri, 7 Mar 2014 19:28:56 +0100"  >&lt;p&gt;The same in Snapshot 14w10c&lt;/p&gt;</comment>
                            <comment id="144538" author="galaxy_2alex" created="Tue, 4 Mar 2014 14:47:45 +0100"  >&lt;p&gt;I opened the issue for the public as this issue is basically public due to many well-known Youtubers know it and used it publicly in their videos.&lt;br/&gt;
This might help to get attention to this bug to get this fixed. Yes, it is a very useful bug, but this is not supposed to be working like this.&lt;/p&gt;</comment>
                            <comment id="141720" author="fienxjox" created="Wed, 19 Feb 2014 22:12:47 +0100"  >&lt;p&gt;Still in 14w08a for dark oak&lt;/p&gt;</comment>
                            <comment id="55314" author="banana478" created="Tue, 19 Mar 2013 00:41:28 +0100"  >&lt;p&gt;Still in 13w11a.&lt;/p&gt;</comment>
                            <comment id="55309" author="bljat" created="Tue, 19 Mar 2013 00:35:41 +0100"  >&lt;p&gt;Is this still a concern in the current Minecraft version? If so, please update the affected versions in order to best aid Mojang ensuring bugs are still valid in the latest releases/pre-releases.&lt;/p&gt;</comment>
                            <comment id="48474" author="bugi74" created="Thu, 28 Feb 2013 22:21:43 +0100"  >&lt;p&gt;Affects 13w09b.&lt;/p&gt;</comment>
                            <comment id="47398" author="bugi74" created="Sun, 24 Feb 2013 16:06:01 +0100"  >&lt;p&gt;Two bugs in the play.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Reason 1&lt;/b&gt;&lt;br/&gt;
At least for big (oak) tree generation, the method that checks whether a line of blocks is ok for generation has half-a-block difference compared to the method that later places the blocks. Thus, with (un)suitable angles, the checker slips through the corner, while the placer ends up stepping through the solid block.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Fix 1&lt;/b&gt;&lt;br/&gt;
Add the missing +0.5D&apos;s on the two minor axis. Using MCP and own namings, but should be clear where it is.&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeHeader panelHeader&quot; style=&quot;border-bottom-width: 1px;&quot;&gt;&lt;b&gt;WorldGenBigTree.checkBlockLine()&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;    ...
    currentSpot[largestEndDeltaAxis] = from[largestEndDeltaAxis] + blockStep;
    currentSpot[axis2] = MathHelper.floor_double((&lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt;) from[axis2] + (&lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt;) blockStep * axis2Step + 0.5D);
    currentSpot[axis3] = MathHelper.floor_double((&lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt;) from[axis3] + (&lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt;) blockStep * axis3Step + 0.5D);
    ...
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This should prevent the replacement of solid blocks, but does not prevent branches coming through the corners. But that is the next part...&lt;br/&gt;
(Also, the placer algorithm has unnecessary floor and +0.5 for the main axis; the base values are always integers so adding 0.5 and the taking the floor of it leads to the same base values.)&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Reason 2&lt;/b&gt;&lt;br/&gt;
The &quot;line tracing&quot; method used is one that will only visit one block along each block size step in a direction where the slope of the path is smallest. Thus, it will &quot;slip&quot; through block corners.&lt;/p&gt;

&lt;p&gt;Here is the code for the current algorithm (including the fix 1 from above):&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeHeader panelHeader&quot; style=&quot;border-bottom-width: 1px;&quot;&gt;&lt;b&gt;WorldGenBigTree.checkBlockLine()&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;        ...
        &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; endMainCoord = endDelta[largestEndDeltaAxis] + mainStep;
        &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; mainCoord = 0;
        &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; (mainCoord = 0; mainCoord != endMainCoord; mainCoord += mainStep) {
            currentSpot[largestEndDeltaAxis] = from[largestEndDeltaAxis] + mainCoord;
            currentSpot[axis2] = MathHelper.floor_double((&lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt;) from[axis2] + (&lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt;) mainCoord * axis2Step + 0.5D);
            currentSpot[axis3] = MathHelper.floor_double((&lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt;) from[axis3] + (&lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt;) mainCoord * axis3Step + 0.5D);
            &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; blockId = &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;.worldObj.getBlockId(currentSpot[0], currentSpot[1], currentSpot[2]);
            &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (blockId != 0 &amp;amp;&amp;amp; blockId != Block.leaves.blockID)
                &lt;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
        }
        ...
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;b&gt;Fix 2 - partial&lt;/b&gt;&lt;br/&gt;
Replace the foor loop and add the method:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;        ...
        &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; {
            &lt;span class=&quot;code-comment&quot;&gt;// Point of entering the block:
&lt;/span&gt;            currentSpot[largestEndDeltaAxis] = from[largestEndDeltaAxis] + mainCoord;
            &lt;span class=&quot;code-comment&quot;&gt;//              start point          + travel so far         - half a step
&lt;/span&gt;            &lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt; minor2 = (from[axis2] + 0.5D) + mainCoord * axis2Step - 0.5 * axis2Step;
            &lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt; minor3 = (from[axis3] + 0.5D) + mainCoord * axis3Step - 0.5 * axis3Step;
            currentSpot[axis2] = MathHelper.floor_double(minor2);
            currentSpot[axis3] = MathHelper.floor_double(minor3);
            
            &lt;span class=&quot;code-comment&quot;&gt;// At the end?
&lt;/span&gt;            &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (currentSpot[0] == to[0] &amp;amp;&amp;amp; currentSpot[1] == to[1] &amp;amp;&amp;amp; currentSpot[2] == to[2])
                &lt;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
            
            &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (!blockIsOk(currentSpot[0], currentSpot[1], currentSpot[2]))
                &lt;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
            
            &lt;span class=&quot;code-comment&quot;&gt;// Check minor axis at the point of leaving the block:
&lt;/span&gt;            &lt;span class=&quot;code-comment&quot;&gt;//       start point          + travel so far         + half a step
&lt;/span&gt;            &lt;span class=&quot;code-comment&quot;&gt;//&lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt; newminor2 = (from[axis2] + 0.5D) + mainCoord * axis2Step + 0.5 * axis2Step;
&lt;/span&gt;            &lt;span class=&quot;code-comment&quot;&gt;//&lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt; newminor3 = (from[axis3] + 0.5D) + mainCoord * axis3Step + 0.5 * axis3Step;
&lt;/span&gt;            &lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt; newMinor2 = minor2 + mainStep * axis2Step;
            &lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt; newMinor3 = minor3 + mainStep * axis3Step;
            
            &lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; change2 = MathHelper.floor_double(newMinor2) != currentSpot[axis2];
            &lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; change3 = MathHelper.floor_double(newMinor3) != currentSpot[axis3];
            &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (change2 &amp;amp;&amp;amp; change3) { &lt;span class=&quot;code-comment&quot;&gt;// Need to step along both minor axis
&lt;/span&gt;                &lt;span class=&quot;code-comment&quot;&gt;// TODO: resolve in which order they should be stepped.
&lt;/span&gt;                currentSpot[axis2] = MathHelper.floor_double(newMinor2);
                &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (!blockIsOk(currentSpot[0], currentSpot[1], currentSpot[2]))
                    &lt;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
                
                currentSpot[axis3] = MathHelper.floor_double(newMinor3);
                &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (!blockIsOk(currentSpot[0], currentSpot[1], currentSpot[2]))
                    &lt;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
            } &lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (change2) { &lt;span class=&quot;code-comment&quot;&gt;// Need to step along axis 2
&lt;/span&gt;                currentSpot[axis2] = MathHelper.floor_double(newMinor2);
                &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (!blockIsOk(currentSpot[0], currentSpot[1], currentSpot[2]))
                    &lt;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
            } &lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (change3) { &lt;span class=&quot;code-comment&quot;&gt;// Need to step along axis 3
&lt;/span&gt;                currentSpot[axis3] = MathHelper.floor_double(newMinor3);
                &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (!blockIsOk(currentSpot[0], currentSpot[1], currentSpot[2]))
                    &lt;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
            }
            
            mainCoord += 1;
        } &lt;span class=&quot;code-keyword&quot;&gt;while&lt;/span&gt; (&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;);
        ...

    &lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; blockIsOk(&lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; x, &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; y, &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; z) {
        &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; blockId = &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;.worldObj.getBlockId(x, y, z);
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (blockId != 0 &amp;amp;&amp;amp; blockId != Block.leaves.blockID)
            &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;;
        &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;;
    }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The loop is not fully optimized, but that is actually a minor thing compared to the fact that both the original and fixed version use double-values with absolute coordinates. This is bad coding, able to cause some issue at extreme coordinates. The algorithm should work on relative values (i.e. tree root would be always at values 0,0,0), which the block read and write routines would use by first taking &apos;floor&apos; and then add the offset coordinates as integers.&lt;/p&gt;

&lt;p&gt;If interested in how it works, I found a page that explains it quite well, although the above version is organized ever so slightly differently, and is for 3D instead of just 2D. &lt;a href=&quot;http://sinepost.wordpress.com/2012/05/24/drawing-in-a-straight-line/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://sinepost.wordpress.com/2012/05/24/drawing-in-a-straight-line/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is also that minor TODO-point left, but that only causes almost completely imperceptible difference with the &quot;correct&quot; operation.&lt;/p&gt;

&lt;p&gt;NOTE: the same fix should NOT be applied to the placeBlockLine() method, otherwise branches will look, uh, twisted?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Remaining &apos;issues&apos;&lt;/b&gt;&lt;br/&gt;
Note, this will only prevent branches sticking through the shown open-corner cylinder shapes. Just like some screenshots show with closed-corner cylinders, with this fix it is still possible to have those leaves-only growths outside the cylinder. This is yet another bug in the check routine; it only checks that the trunk has space to grow, not that there is a way for leaves to grow. Alternately, the generator could be a bit smarter when placing the leaves, but then it still allows rather silly trees (just the trunk and leaves on top of it).&lt;/p&gt;</comment>
                            <comment id="47363" author="mcmicgera" created="Sun, 24 Feb 2013 10:39:29 +0100"  >&lt;p&gt;Looks everytime like this with closed corners/edges.&lt;/p&gt;</comment>
                            <comment id="47329" author="unon1100" created="Sun, 24 Feb 2013 02:57:34 +0100"  >&lt;p&gt;The branches can also destroy bedrock!&lt;/p&gt;

&lt;p&gt;Voting/&lt;/p&gt;</comment>
                            <comment id="47152" author="banana478" created="Sat, 23 Feb 2013 01:25:50 +0100"  >&lt;p&gt;Confirmed.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10102">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="62232">MC-39802</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="62433">MC-39994</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="62531">MC-40091</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="62742">MC-40289</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="63022">MC-40408</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="63035">MC-40417</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="63805">MC-40849</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="65645">MC-42003</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="66458">MC-42404</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="69431">MC-44478</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="69600">MC-44547</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="72366">MC-46749</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="74838">MC-49091</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="75966">MC-50137</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="91406">MC-63993</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="100723">MC-72843</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="104083">MC-75850</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10103">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="11681">MC-415</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="13886">MC-2363</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="107887">MCPE-8094</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="22256" name="2013-02-23_01.05.49.png" size="336916" author="mcmicgera" created="Sat, 23 Feb 2013 01:14:42 +0100"/>
                            <attachment id="22257" name="2013-02-23_01.06.02.png" size="232176" author="mcmicgera" created="Sat, 23 Feb 2013 01:14:42 +0100"/>
                            <attachment id="22258" name="2013-02-23_01.06.25.png" size="238467" author="mcmicgera" created="Sat, 23 Feb 2013 01:14:42 +0100"/>
                            <attachment id="22259" name="2013-02-23_01.07.38.png" size="718793" author="mcmicgera" created="Sat, 23 Feb 2013 01:14:42 +0100"/>
                            <attachment id="22260" name="2013-02-23_01.08.07.png" size="621419" author="mcmicgera" created="Sat, 23 Feb 2013 01:14:42 +0100"/>
                            <attachment id="22325" name="2013-02-23_19.56.45.png" size="428841" author="unon1100" created="Sun, 24 Feb 2013 02:57:34 +0100"/>
                            <attachment id="22349" name="2013-02-24_10.29.49.png" size="277529" author="mcmicgera" created="Sun, 24 Feb 2013 10:39:29 +0100"/>
                            <attachment id="22348" name="2013-02-24_10.37.19.png" size="509829" author="mcmicgera" created="Sun, 24 Feb 2013 10:38:28 +0100"/>
                            <attachment id="22350" name="2013-02-24_10.51.40.png" size="620024" author="mcmicgera" created="Sun, 24 Feb 2013 10:53:46 +0100"/>
                            <attachment id="22364" name="2013-02-24_17.00.49.png" size="458953" author="mcmicgera" created="Sun, 24 Feb 2013 17:01:21 +0100"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                <customfield id="customfield_10701" key="com.atlassian.jira.plugin.system.customfieldtypes:datetime">
                        <customfieldname>CHK</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Sat, 23 Feb 2013 01:45:00 +0100</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10500" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Confirmation Status</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10303"><![CDATA[Confirmed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_11700" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10501" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Game Mode</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10305"><![CDATA[Creative]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_11100" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Linked</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_11600" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i0n053:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    </customfields>
    </item>
</channel>
</rss>