Uploaded image for project: 'Minecraft: Java Edition'
  1. Minecraft: Java Edition
  2. MC-41893

Breaking a minecart with command block in creative drops a minecart after reloading the world

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Reopened
    • Resolution: Unresolved
    • Affects Version/s: Minecraft 1.7.4, Minecraft 1.9 Pre-Release 2, Minecraft 16w43a, Minecraft 1.11.2, Minecraft 17w15a, Minecraft 17w17b, Minecraft 1.12 Pre-Release 2, Minecraft 1.12 Pre-Release 5, Minecraft 1.12 Pre-Release 6, Minecraft 1.12 Pre-Release 7, Minecraft 1.12, Minecraft 17w31a, Minecraft 1.12.1 Pre-Release 1, Minecraft 1.12.1, Minecraft 1.12.2 Pre-Release 1, Minecraft 1.12.2 Pre-Release 2, Minecraft 1.12.2, Minecraft 17w43a, Minecraft 17w43b, Minecraft 17w45a, Minecraft 17w48a, Minecraft 17w50a, Minecraft 18w01a, Minecraft 1.13-pre1, Minecraft 1.13-pre3, Minecraft 1.13-pre6, Minecraft 1.13-pre10, Minecraft 1.13, Minecraft 18w30b, Minecraft 18w31a, Minecraft 1.13.1, Minecraft 1.13.2, Minecraft 18w43b, Minecraft 18w43c, Minecraft 18w44a, Minecraft 18w45a
    • Fix Version/s: None
    • Confirmation Status:
      Confirmed
    • Game Mode:
      Creative
    • Category:
      Minecart

      Description

      How to reproduce

      1. Place a minecart with command block
      2. Leave and reopen the world
      3. Destroy it in creative mode using your hand, a sword / tool or an arrow
        → The minecart with command block drops a (regular) minecart (item) named "@", whereas an empty / normal minecart would’ve dropped nothing after these steps. Also if you don’t leave and reopen the world first, the minecart with command blocks drops nothing either.

      Code analysis

      The following is based on decompiled version of Minecraft 1.8 using MCP. All method and class names are the names used in the decompiled version.

      The reason why this happens is that the public void writeDataToNBT(NBTTagCompound p_145758_1_) method of the net.minecraft.command.server.CommandBlockLogic class always saves the CustomName in the NBT data. As this only happens when you unload the minecart or reopen the world a MinecartCommandBlock that is summoned and directly destroyed does not cause this. Instead the method should only save the CustomName if it is not "@".

      /**
       * Stores data to NBT format.
       */
      public void writeDataToNBT(NBTTagCompound p_145758_1_)
      {
          p_145758_1_.setString("Command", this.commandStored);
          p_145758_1_.setInteger("SuccessCount", this.successCount);
          
          // Replaced this
          //p_145758_1_.setString("CustomName", this.customName);
          if (!this.customName.equals("@")) {
              p_145758_1_.setString("CustomName", this.customName);    
          }
          
          p_145758_1_.setBoolean("TrackOutput", this.trackOutput);
      
          if (this.lastOutput != null && this.trackOutput)
          {
              p_145758_1_.setString("LastOutput", IChatComponent.Serializer.componentToJson(this.lastOutput));
          }
      
          this.field_175575_g.func_179670_b(p_145758_1_);
      }
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                fdsteffahn Frank Steffahn
              • Votes:
                6 Vote for this issue
                Watchers:
                9 Start watching this issue

                Dates

                • Created:
                  Updated:
                  CHK: