<!-- 
RSS generated by JIRA (9.12.2#9120002-sha1:301bf498dd45d800842af0b84230f1bb58606c13) at Sun Jan 12 12:17:29 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-8345] Placing torch on backside of stairs impossible</title>
                <link>https://bugs.mojang.com/browse/MC-8345</link>
                <project id="10400" key="MC">Minecraft: Java Edition</project>
                    <description>&lt;h3&gt;&lt;a name=&quot;Thebug&quot;&gt;&lt;/a&gt;The bug&lt;/h3&gt;
&lt;p&gt;You can&apos;t place torches or redstone torches on the backside of a stairs block. Not sure if this is a bug, but since the backside is the size of a normal block, it should probably be possible to place torches there.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Possiblefix&quot;&gt;&lt;/a&gt;Possible fix&lt;/h3&gt;
&lt;p&gt;A possible fix by &lt;a href=&quot;https://bugs.mojang.com/secure/ViewProfile.jspa?name=bugi74&quot; class=&quot;user-hover&quot; rel=&quot;bugi74&quot;&gt;bugi74&lt;/a&gt; can be found in &lt;a href=&quot;https://bugs.mojang.com/browse/MC-8345?focusedCommentId=43537&amp;amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-43537&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;this comment&lt;/a&gt;.&lt;/p&gt;</description>
                <environment></environment>
        <key id="21264">MC-8345</key>
            <summary>Placing torch on backside of stairs impossible</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="Excited">Maria Lem&#243;n</assignee>
                                    <reporter username="suchtie">Marko Milse</reporter>
                        <labels>
                    </labels>
                <created>Fri, 25 Jan 2013 18:31:41 +0100</created>
                <updated>Wed, 1 May 2019 12:11:16 +0200</updated>
                            <resolved>Mon, 10 Apr 2017 15:21:07 +0200</resolved>
                                    <version>Minecraft 1.4.6</version>
                    <version>Minecraft 1.4.7</version>
                    <version>Snapshot 13w04a</version>
                    <version>Snapshot 13w07a</version>
                    <version>Snapshot 13w09a</version>
                    <version>Snapshot 13w09b</version>
                    <version>Snapshot 13w09c</version>
                    <version>Minecraft 1.5</version>
                    <version>Snapshot 13w11a</version>
                    <version>Minecraft 1.6.1</version>
                    <version>Minecraft 1.6.2</version>
                    <version>Minecraft 1.6.4</version>
                    <version>Minecraft 1.7.1</version>
                    <version>Minecraft 1.7.2</version>
                    <version>Minecraft 13w48a</version>
                    <version>Minecraft 13w48b</version>
                    <version>Minecraft 13w49a</version>
                    <version>Minecraft 1.7.3</version>
                    <version>Minecraft 1.7.4</version>
                    <version>Minecraft 14w05b</version>
                    <version>Minecraft 14w06b</version>
                    <version>Minecraft 14w07a</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.9</version>
                    <version>Minecraft 14w17a</version>
                    <version>Minecraft 14w18a</version>
                    <version>Minecraft 14w21b</version>
                    <version>Minecraft 14w25a</version>
                    <version>Minecraft 1.7.10-pre4</version>
                    <version>Minecraft 14w25b</version>
                    <version>Minecraft 14w26c</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-pre2</version>
                    <version>Minecraft 1.8.6</version>
                    <version>Minecraft 15w45a</version>
                    <version>Minecraft 15w46a</version>
                    <version>Minecraft 15w47a</version>
                    <version>Minecraft 15w50a</version>
                    <version>Minecraft 15w51b</version>
                    <version>Minecraft 16w03a</version>
                    <version>Minecraft 16w06a</version>
                    <version>Minecraft 16w07b</version>
                    <version>Minecraft 1.9 Pre-Release 1</version>
                    <version>Minecraft 1.10.2</version>
                    <version>Minecraft 16w33a</version>
                    <version>Minecraft 16w38a</version>
                    <version>Minecraft 16w41a</version>
                    <version>Minecraft 16w42a</version>
                    <version>Minecraft 16w43a</version>
                    <version>Minecraft 16w44a</version>
                    <version>Minecraft 1.11 Pre-Release 1</version>
                    <version>Minecraft 1.11</version>
                    <version>Minecraft 1.11.2</version>
                    <version>Minecraft 17w06a</version>
                                    <fixVersion>Minecraft 17w15a</fixVersion>
                                                        <votes>36</votes>
                                    <watches>13</watches>
                                                                            <comments>
                            <comment id="353828" author="uzuky" created="Thu, 12 Jan 2017 15:50:46 +0100"  >&lt;p&gt;still in 1.11.2&lt;/p&gt;</comment>
                            <comment id="341671" author="chiguai" created="Wed, 9 Nov 2016 15:04:06 +0100"  >&lt;p&gt;still in 1.11 Pre-Release 1&lt;/p&gt;</comment>
                            <comment id="340284" author="chiguai" created="Fri, 4 Nov 2016 14:25:35 +0100"  >&lt;p&gt;still in 16w44a&lt;/p&gt;</comment>
                            <comment id="276683" author="akazombie" created="Thu, 7 Jan 2016 12:11:15 +0100"  >&lt;p&gt;Confirmed for 15w51b&lt;/p&gt;</comment>
                            <comment id="264379" author="19spleen" created="Thu, 12 Nov 2015 17:35:41 +0100"  >&lt;p&gt;Confirmed for 15w46a&lt;/p&gt;</comment>
                            <comment id="204118" author="rydian" created="Sat, 18 Oct 2014 15:41:54 +0200"  >&lt;p&gt;Confirmed in 1.8.1-pre2.&lt;br/&gt;
&lt;a href=&quot;http://gfycat.com/FrightenedZealousDove&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://gfycat.com/FrightenedZealousDove&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="203559" author="rydian" created="Wed, 15 Oct 2014 20:52:02 +0200"  >&lt;p&gt;Confirmed in 1.8.1-pre1.&lt;/p&gt;</comment>
                            <comment id="192018" author="garyclosse" created="Thu, 21 Aug 2014 21:07:48 +0200"  >&lt;p&gt;Confirmed for 14w34d&lt;/p&gt;</comment>
                            <comment id="168359" author="garyclosse" created="Thu, 26 Jun 2014 19:39:36 +0200"  >&lt;p&gt;Confirmed for 14w26c&lt;/p&gt;</comment>
                            <comment id="167181" author="garyclosse" created="Mon, 23 Jun 2014 20:36:31 +0200"  >&lt;p&gt;Confirmed for 14w25b.&lt;/p&gt;</comment>
                            <comment id="153721" author="garyclosse" created="Wed, 30 Apr 2014 13:37:43 +0200"  >&lt;p&gt;Confirmed for 14w18a&lt;/p&gt;</comment>
                            <comment id="152552" author="garyclosse" created="Fri, 25 Apr 2014 20:01:26 +0200"  >&lt;p&gt;Confirmed for 14w17a&lt;/p&gt;</comment>
                            <comment id="151669" author="mistersanderson" created="Sat, 19 Apr 2014 19:06:35 +0200"  >&lt;p&gt;Still present in 1.7.9.&lt;/p&gt;</comment>
                            <comment id="145894" author="garyclosse" created="Sun, 9 Mar 2014 13:40:45 +0100"  >&lt;p&gt;Still an issue in 10c&lt;/p&gt;</comment>
                            <comment id="143382" author="garyclosse" created="Thu, 27 Feb 2014 13:42:14 +0100"  >&lt;p&gt;Still an issue in 08a and 1.7.5&lt;/p&gt;</comment>
                            <comment id="143310" author="ezekielelin" created="Wed, 26 Feb 2014 23:40:41 +0100"  >&lt;p&gt;Is this still a concern in the latest Minecraft version &lt;b&gt;14w08a&lt;/b&gt;? 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="94753" author="_ericbg" created="Sat, 27 Jul 2013 13:00:02 +0200"  >&lt;p&gt;Confirmed on 1.6.2.&lt;/p&gt;</comment>
                            <comment id="48836" author="bugi74" created="Fri, 1 Mar 2013 22:28:49 +0100"  >&lt;p&gt;Affects 13w09c.&lt;/p&gt;</comment>
                            <comment id="48414" author="bugi74" created="Thu, 28 Feb 2013 20:01:00 +0100"  >&lt;p&gt;Affects 13w09b.&lt;/p&gt;</comment>
                            <comment id="47101" author="bugi74" created="Fri, 22 Feb 2013 19:27:27 +0100"  >&lt;p&gt;Updated the code fixes to be compatible with the fix for &lt;a href=&quot;https://bugs.mojang.com/browse/MC-9176&quot; title=&quot;Glass panes not correctly rendering with the back of stairs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MC-9176&quot;&gt;&lt;del&gt;MC-9176&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="46044" author="bugi74" created="Sat, 16 Feb 2013 14:52:36 +0100"  >&lt;p&gt;@Simon: I&apos;d change your idea so that it is one more gamerule (accessed via commands), like &apos;/gamerule unrestrictedBlockPlacement&apos;. However, that is quite a large change (but not a difficult one); it not only needs to consider placing a thing on another block, but also all rules about keeping things in place. It is also a feature request, not a bugfix, so forums would be the right avenue for that.&lt;/p&gt;</comment>
                            <comment id="45994" author="simons mith" created="Sat, 16 Feb 2013 01:40:56 +0100"  >&lt;p&gt;Personally I can&apos;t see anything wrong with being able to place a torch on any side of a stair. Yes, if you&apos;re using the blocks /as stairs/ it would be unusual to put torches on them, but for any of a hundred different decorative permutations that could otherwise be possible with stairs, why not allow it?&lt;/p&gt;

&lt;p&gt;I would actually make this argument for almost every block in the game; use minimal sanity checks for block placement and by and large let the player do what they want. If they don&apos;t like something because they think it&apos;s unrealistic, they won&apos;t do it. But if they come up with a creative use (such in the example of mushrooms being used as fake ropes, which is something I would never have thought of), why put barriers in their way?&lt;/p&gt;</comment>
                            <comment id="43539" author="kumasasa" created="Mon, 4 Feb 2013 22:43:13 +0100"  >&lt;p&gt;Reopened.&lt;/p&gt;</comment>
                            <comment id="43538" author="bugi74" created="Mon, 4 Feb 2013 22:41:59 +0100"  >&lt;p&gt;Added a screenshot showing various cases of manually sticking torches on the backside of stairs.&lt;/p&gt;</comment>
                            <comment id="43537" author="bugi74" created="Mon, 4 Feb 2013 22:40:49 +0100"  >&lt;p&gt;(NOTE: would be best to fix all of this, &lt;a href=&quot;https://bugs.mojang.com/browse/MC-9176&quot; title=&quot;Glass panes not correctly rendering with the back of stairs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MC-9176&quot;&gt;&lt;del&gt;MC-9176&lt;/del&gt;&lt;/a&gt; and &lt;a href=&quot;https://bugs.mojang.com/browse/MC-2938&quot; title=&quot;Different types of fences and walls don&amp;#39;t connect&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MC-2938&quot;&gt;&lt;del&gt;MC-2938&lt;/del&gt;&lt;/a&gt; at the same time; see the &lt;a href=&quot;https://bugs.mojang.com/browse/MC-2938&quot; title=&quot;Different types of fences and walls don&amp;#39;t connect&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MC-2938&quot;&gt;&lt;del&gt;MC-2938&lt;/del&gt;&lt;/a&gt; for more text.)&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Fix&lt;/b&gt;&lt;br/&gt;
The changes are somewhat long, and I didn&apos;t optimize them too much. Tested them quite a bit, but have left many block-torch combinations untested. Also, the changes only cover stair-blocks, not any other possible blocks with similar large surfaces. However, after these changes, adding the support for another block type is merely adding an override method in that block&apos;s class.&lt;/p&gt;

&lt;p&gt;I added a method to Block, one that can be queried whether a given side of a block is a full solid surface (suitable for sticking thing on/at). The base method works (or at least is supposed to work) like before, only for full solid blocks or those who specifically declare that their top surface is ok (like glass). The BlockStairs has overridden that method to consider its orientation and specifically returns true for that backside (and the &quot;bottom&quot;, whichever way it happens to be). The BlockTorch is then modified quite heavily to use this new method to resolve where or if a torch can be (or stay) attached to.&lt;/p&gt;

&lt;p&gt;Code formatting style is &quot;compact&quot; for better readability in this comment.&lt;br/&gt;
(EDIT: Incorporated new versions from &lt;a href=&quot;https://bugs.mojang.com/browse/MC-9176&quot; title=&quot;Glass panes not correctly rendering with the back of stairs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MC-9176&quot;&gt;&lt;del&gt;MC-9176&lt;/del&gt;&lt;/a&gt;.)&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;Block&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;    /**
     * Override as necessary.
     * @param side 1 = bottom, 2 = z+1, 3 = z-1, 4 = x+1, 5 = x-1,  top = 0 or anything &lt;span class=&quot;code-keyword&quot;&gt;else&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;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; that side is solid and full surface
     */
    &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; hasSolidFullSurfaceAt(IBlockAccess access, &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; side) {
        &lt;span class=&quot;code-keyword&quot;&gt;switch&lt;/span&gt; (side) {
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 1: &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; access.isBlockNormalCube(x, y, z);
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 2:
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 3:
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 4:
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 5: &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; access.isBlockNormalCube(x, y, z);
            &lt;span class=&quot;code-keyword&quot;&gt;default&lt;/span&gt;: &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; access.doesBlockHaveSolidTopSurface(x, y, z);
        }
    }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&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;BlockStairs&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-keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; hasSolidFullSurfaceAt(IBlockAccess access, &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; side) {
        &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; metaData = access.getBlockMetadata(x, y, z);
        &lt;span class=&quot;code-keyword&quot;&gt;switch&lt;/span&gt; (side) {
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 1: &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; (metaData &amp;amp; 4) == 0;
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 2: &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; (metaData &amp;amp; 3) == 3;
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 3: &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; (metaData &amp;amp; 3) == 2;
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 4: &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; (metaData &amp;amp; 3) == 1;
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 5: &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; (metaData &amp;amp; 3) == 0;
            &lt;span class=&quot;code-keyword&quot;&gt;default&lt;/span&gt;: &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; (metaData &amp;amp; 4) == 1; &lt;span class=&quot;code-comment&quot;&gt;// &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; it is upside down
&lt;/span&gt;        }
    }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And now the bulk... The method signatures were not changed, but the implementations are about 95% rewritten. Also, missing changes to method onBlockAdded(); didn&apos;t seem to affect manual placement, might be issue with generated structures in future, should they want to stick torches on backsides of stairs.&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;BlockTorch&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-keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; canPlaceTorchOn(World world, &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-comment&quot;&gt;// Check just the block/surface below
&lt;/span&gt;        &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; neighborHasSuitableSurfaceToBlockAt(world, x, y, z, 1);
    }

    &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; canPlaceBlockAt(World world, &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-comment&quot;&gt;// Go through neighbor blocks, using the &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; method &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; checking surfaces
&lt;/span&gt;        &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; (&lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; i = 1; i &amp;lt;= 5; i++) {
            &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (neighborHasSolidSurfaceToBlockAt(world, x, y, z, i))
                &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;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;private&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; neighborHasSolidSurfaceToBlockAt(IBlockAccess access, &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; side) {
        &lt;span class=&quot;code-keyword&quot;&gt;switch&lt;/span&gt; (side) {
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 1: {
                y--;
                &lt;span class=&quot;code-comment&quot;&gt;// Check &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; specials &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; block/surface below:
&lt;/span&gt;                &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; blockId = access.getBlockId(x, y, z);
                &lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; b = blockId == Block.fence.blockID || blockId == Block.netherFence.blockID
                    || blockId == Block.glass.blockID || blockId == Block.cobblestoneWall.blockID;
                &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (b)
                    &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;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (access.doesBlockHaveSolidTopSurface(x, y, z))
                    &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;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
            }
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 2: z++; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (access.isBlockNormalCube(x, y, z)) &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;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 3: z--; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (access.isBlockNormalCube(x, y, z)) &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;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 4: x++; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (access.isBlockNormalCube(x, y, z)) &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;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 5: x--; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (access.isBlockNormalCube(x, y, z)) &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;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
            &lt;span class=&quot;code-keyword&quot;&gt;default&lt;/span&gt;: y++; &lt;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
        }
        &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; blockId = access.getBlockId(x, y, z);
        Block block = Block.blocksList[blockId];
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (block == &lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt;)
            &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; block.hasSolidFullSurfaceAt(access, x, y, z, side);
    }

    &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; onBlockPlaced(World world, &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; side, &lt;span class=&quot;code-object&quot;&gt;float&lt;/span&gt; par6, &lt;span class=&quot;code-object&quot;&gt;float&lt;/span&gt; par7, &lt;span class=&quot;code-object&quot;&gt;float&lt;/span&gt; par8, &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; inputMetaData) {
        &lt;span class=&quot;code-keyword&quot;&gt;switch&lt;/span&gt; (side) {
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 1: &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; neighborHasSolidSurfaceToBlockAt(world, x, y, z, side) ? 5 : inputMetaData;
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 2: &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; neighborHasSolidSurfaceToBlockAt(world, x, y, z, side) ? 4 : inputMetaData;
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 3: &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; neighborHasSolidSurfaceToBlockAt(world, x, y, z, side) ? 3 : inputMetaData;
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 4: &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; neighborHasSolidSurfaceToBlockAt(world, x, y, z, side) ? 2 : inputMetaData;
            &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 5: &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; neighborHasSolidSurfaceToBlockAt(world, x, y, z, side) ? 1 : inputMetaData;
            &lt;span class=&quot;code-keyword&quot;&gt;default&lt;/span&gt;: &lt;span class=&quot;code-comment&quot;&gt;// Can not put it on ceiling.
&lt;/span&gt;                &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; inputMetaData;
        }
    }

    &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; void onNeighborBlockChange(World world, &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; neighborBlockId) {
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;.dropTorchIfCantStay(world, x, y, z)) {
            &lt;span class=&quot;code-comment&quot;&gt;// If here, the torch could stay on _some_ side of &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; block, but not necessarily on the one it used to be.
&lt;/span&gt;            &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; metaData = world.getBlockMetadata(x, y, z);
            &lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; dropIt = &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;;
            &lt;span class=&quot;code-keyword&quot;&gt;switch&lt;/span&gt; (metaData) {
                &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 1: dropIt = !neighborHasSolidSurfaceToBlockAt(world, x, y, z, 5); &lt;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
                &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 2: dropIt = !neighborHasSolidSurfaceToBlockAt(world, x, y, z, 4); &lt;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
                &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 3: dropIt = !neighborHasSolidSurfaceToBlockAt(world, x, y, z, 3); &lt;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
                &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 4: dropIt = !neighborHasSolidSurfaceToBlockAt(world, x, y, z, 2); &lt;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
                &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; 5: dropIt = !neighborHasSolidSurfaceToBlockAt(world, x, y, z, 1); &lt;span class=&quot;code-keyword&quot;&gt;break&lt;/span&gt;;
                &lt;span class=&quot;code-keyword&quot;&gt;default&lt;/span&gt;: dropIt = &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;;
            }
            &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (dropIt) {
                &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0);
                world.setBlockWithNotify(x, y, z, 0);
            }
        }
    }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This cut&amp;amp;pasting from my changed sources may have missed a change or two, but the idea should be clear and easy to adapt/improve upon.&lt;/p&gt;</comment>
                            <comment id="43511" author="roadsguy" created="Mon, 4 Feb 2013 20:32:26 +0100"  >&lt;p&gt;Oh really? Great! &lt;img class=&quot;emoticon&quot; src=&quot;https://bugs.mojang.com/images/icons/emoticons/biggrin.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;

&lt;p&gt;Maybe I need to pay more attention. &lt;img class=&quot;emoticon&quot; src=&quot;https://bugs.mojang.com/images/icons/emoticons/tongue.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                            <comment id="43506" author="shufboyardee" created="Mon, 4 Feb 2013 20:06:27 +0100"  >&lt;p&gt;Roadsguy, good news, they got rid of the ugly horizontal line, just this past snapshot or two.&lt;/p&gt;</comment>
                            <comment id="43505" author="roadsguy" created="Mon, 4 Feb 2013 19:56:12 +0100"  >&lt;p&gt;Forget this, I just want them to fix the ugly &quot;horizontal line&quot; that appears in the middle of right-side-up stairs caused by the texture orientation...&lt;/p&gt;

&lt;p&gt;But anyway, you modded the game to fix this? Cool.&lt;/p&gt;</comment>
                            <comment id="43498" author="bugi74" created="Mon, 4 Feb 2013 19:13:15 +0100"  >&lt;p&gt;(EDIT: Now this one removed in favor of the new screenshot with full functionality.)&lt;br/&gt;
&lt;del&gt;Added the screenshot fixed-stairs-torches.png.&lt;/del&gt; Each torch was put in place in the normal way, and will not attach to any other surface of the stairs, only the backside.&lt;/p&gt;

&lt;p&gt;P.S. it took about 2 hours from the idea to get to this point.&lt;/p&gt;

&lt;p&gt;P.P.S. Embarrassingly enough, trying to do the same with upside down stairs caused a crash. &lt;img class=&quot;emoticon&quot; src=&quot;https://bugs.mojang.com/images/icons/emoticons/tongue.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; ... 45 minutes later that and couple other bugs fixed, but one more issue left with trying to put torches on block immediately above or below another block with torch.&lt;/p&gt;</comment>
                            <comment id="43497" author="bugi74" created="Mon, 4 Feb 2013 19:11:39 +0100"  >&lt;p&gt;Indeed, not impossible. Attaching a screenshot done on a 1.4.7 client running with a fix for this issue.&lt;br/&gt;
Code for the fix comes as soon as I can test it a bit more (e.g. upside down stairs) and clean it up.&lt;/p&gt;</comment>
                            <comment id="40803" author="gabrielsalla" created="Mon, 28 Jan 2013 23:51:55 +0100"  >&lt;p&gt;But it&apos;s not impossible&lt;/p&gt;</comment>
                            <comment id="40802" author="banana478" created="Mon, 28 Jan 2013 23:42:28 +0100"  >&lt;p&gt;Torches can be placed on the top of glass blocks, too. But not the sides.&lt;/p&gt;</comment>
                            <comment id="40800" author="gabrielsalla" created="Mon, 28 Jan 2013 23:40:45 +0100"  >&lt;p&gt;But there&apos;s a torch at the top of the stair so it&apos;s not impossible...&lt;br/&gt;
The game can differentiate with some lines of code&lt;/p&gt;</comment>
                            <comment id="40798" author="banana478" created="Mon, 28 Jan 2013 23:29:05 +0100"  >&lt;p&gt;The stair block is considered transparent, so this is impossible. Minecraft is purposely simplified, and the game cannot differentiate based upon what side of the stairs the torch is placed.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10102">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="22715">MC-9174</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="23606">MC-9851</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="24875">MC-10892</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="26630">MC-11915</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="52105">MC-30941</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="68813">MC-44173</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="89527">MC-62192</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="98731">MC-71024</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="138526">MC-100362</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10103">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="22717">MC-9176</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="24582">MC-10613</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="203346">MC-131115</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="14814">MC-2938</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="20140" name="2013-01-28_19.41.38.jpg" size="251409" author="dresdin07" created="Mon, 28 Jan 2013 19:42:33 +0100"/>
                            <attachment id="20142" name="2013-01-28_19.44.36.jpg" size="238614" author="dresdin07" created="Mon, 28 Jan 2013 19:45:28 +0100"/>
                            <attachment id="21059" name="fixed-stairs-torches-2.png" size="222813" author="bugi74" created="Mon, 4 Feb 2013 22:41:59 +0100"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                <customfield id="customfield_10701" key="com.atlassian.jira.plugin.system.customfieldtypes:datetime">
                        <customfieldname>CHK</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 20 Feb 2013 19:32: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_11100" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Linked</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>6.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_11600" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i0j4in:</customfieldvalue>

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