Belle-Ve Bricks

Your Imagination

Ultimate Guide to LEGO® Pokémon

Create Your

We help you from start to finish to create and deliver your tailor-made custom model.
Custom model
Continue

If you are one of the many people who love LEGO® and Pokémon then this post will be for you. We will take a look at the best LEGO® Pokémon MOCs that have been designed, and Pokémon licensing constraints and you will even have the opportunity to get your own LEGO® Pokémon MOC too. If you are ready to find out everything there is to know about LEGO® Pokémon then carry on reading!

Key Takeaway

  • LEGO® does not have the license to design Pokémon sets, the license is owned by Mega Contrux (Matel).
  • There are no official LEGO® Pokémon sets available to buy, all Pokémon sets are made by Mega Construx.
  • LEGO® and Pokémon enthusiasts have designed LEGO® Pokémon MOCs, such as Charizard and Poké balls.
  • The first Mega Construx Pokémon set was released in the Summer of 2017.
  • Mega Construx has released 218 Pokémon sets over 8 sub-themes.

LEGO® Does Not Make Pokémon Sets

LEGO® is unable to produce any Pokémon sets due to copyright issues. The license to produce Pokémon sets is held by Mattel Mega Contrux (Mega Bloks) and has been since 2018. Much to LEGO fans’ dismay the license between The Pokémon Company International and Mattel was renewed in October 2022.

LEGO® Are Restricted From Making Pokémon

Pokemon centre LEGO Ideas

In December 2014 a Pokémon LEGO® IDEAS submission by Rydalch was rejected due to licensing issues. A comment was added by LEGO® which stated they would not consider any future Pokémon projects, the full statement can be seen below.

“We’ve looked into the possibility of producing a set based on this licensed property (Pokemon). Since the property is owned by a competitor, we’ve decided it’s neither a brand fit nor a strategic fit for the Lego Group to pursue a license, and so we will not consider Pokemon projects on Lego Ideas further. We’re sorry to be the bearers of this disappointing news.”

List of Best LEGO® Pokémon MOCs

1. Pikachu Mosaic

This Pikacha MOC was designed by John Kupitz and he has done a great job at using a massive variety of pieces to get a very detailed mosaic. If you look closely you will see the use of ladders, bricks, slopes, helmets and even crabs!

2. Life Sized Mud Fish

mud fish lego pokemon

This life-sized Mud Fish is at another level when it comes to LEGO® Pokémon MOCs, standing at 18.3″ tall and made from 2,228 pieces it is a masterpiece. Getting this MOC would be any avid Pokémon fan’s dream come true!

3. Piplup

LEGO Pokemon Piplup

This cute LEGO® Pokémon Piplup MOC was designed by Mike Nieves. It is incredibly clever how the pieces have been used to get such a detailed design in a small model. The way that Piplup has also been posed on ice is a really nice touch, this brings more character to the design.

4. Venusaur 

LEGO Pokemon Venusauar

This LEGO® Pokémon MOC left me speechless when I saw it, Dae Vead has designed this with impeccable detail. The reptilian-style body and flower on Venusaur’s back look to scale, nothing looks out of place on this MOC. The tree next to Venusaur is nice too as this really amplifies the sense of how large this Pokémon is! Anyone who loves Bulbasaur, Ivysaur, or Venosaur will be ecstatic over this MOC.

5. Articuno

Articuno LEGO Pokemon

Articuno is one of the 3 Legendary birds in the Pokémon world. This stunning model was designed by MK Bricks, the level of detail on this Pokémon MOC is amazing. The layer of the pieces to get the feathered effect is very nice and the iconic tail that Articuno is well known for has been designed perfectly.

6. Bulbasaur, Charmander and Squirtle BrickHeadz

KantoStarters

Some may say Bulbasaur, Charmander and Squirtle are iconic Pokémon. These 3 starters Pokémon from the Kanto region were designed by Stormythos, these cute and detailed BrickHeadz are very popular amongst LEGO® Pokémon fans.

List of LEGO® Pokémon MOCs From Our Website

More Info

When Was the first Mega Construx Pokémon Set Released?

In February 2017 Mega Construx announced the release of their Pokémon range, in this announcement they stated the first series would be released in the summer of 2017. The first release included six individual Pokémons, these were Abra, Eevee, Machop, Magikarp, Pikachu, and Zubat.

How Many Mega Construx Pokémon Sets Are There?

Mega Construx has released a good number of Pokémon sets, in total there have been 218 sets over 8 Pokémon sub-themes.

  • Poké Ball Series – 120 sets
  • Versus Series – 22 sets
  • Multi-Packs – 20 sets
  • Single Pokémon – 30 sets
  • Jumbo Series – 7 sets
  • Build & Show Series – 8 sets
  • Holiday / One Off – 5 sets
  • Detective Pikachu Series – 6 sets

If you want to take a look at what Mega Construx Pokémon sets are available click here.

Is Mega Construx Owned by LEGO®?

Mega Construx is not owned by LEGO®. Mega Construx is a Canadian children’s toy company currently owned by Mattel.

How To Build a LEGO® Charizard MOC

YouTube video

Conclusion

LEGO® fans are disappointed that Mattel owns the license to produce Pokémon sets, the likelihood is that LEGO® will never take the license away from Mattel too, but don’t let this discourage your dreams of owning a LEGO® Pokémon set, remember, there are still a lot of LEGO® Pokémon MOCs available! It has to be said that the Mega Construx sets are still good quality so this is always an option too.

One of the best things about LEGO® is that it can be whatever you want it to be, if you cannot buy it you can build it!

<div class="badge-base LI-profile-badge" data-locale="en_US" data-size="large" data-theme="dark" data-type="HORIZONTAL" data-vanity="ferdi-vol" data-version="v1"><a class="badge-base__link LI-simple-link" href="https://www.linkedin.com/in/%E2%9C%85-ferdi-vol-corporate-gifts/?trk=profile-badge"></a></div>
/* Auto generated, hash = 5dceu9kevqjdyuy2uw1atqrsu */
//TODO: Break this file down so that we can actually unit test it.
(function(window) {
  /**
  * Renders all unrendred LinkedIn Badges on the page
  */
  window.LIRenderAll = function () {
    var CALLBACK_NAME     = 'LIBadgeCallback', //Must match callback on helpers.js
        BADGE_NAMES       = '.LI-profile-badge, .LI-entity-badge',
        // TODO -- tracking param for other badge types
        TRACKING_PARAM    = 'profile-badge',
        responsesReceived = 0, //Keeps track of number of responses recieved for proper cleanup when finished
        expectedResponses = 0, //Keeps track of number of responses to expect
        scripts           = [ ], //Keeps track of scripts added for proper cleanup when finished
        childScripts      = {}, //Keeps track of child scripts to render
        badges            = Array.prototype.slice.call(document.querySelectorAll(BADGE_NAMES));

    var i, len, badge, rendered;
    for (i = 0, len = badges.length;  i < len; i++) {
      badge    = badges[i];
      rendered =  badge.getAttribute('data-rendered');
      if (!rendered) {
        expectedResponses++;
        badge.setAttribute('data-rendered', true);
        renderBadge(badge);
      }
    }

    function isCNDomain() {
      if (typeof window !== "undefined") {
        var hostName = window.location && window.location.hostname ||  '';
        return (/linkedin(-ei)?.cn$/).test(hostName);
      }

      return false;
    }

    function generateUrl(isEI) {
      var domainPrefix = isEI ? 'https://badges.linkedin-ei' : 'https://badges.linkedin';
      if (isCNDomain()) {
        return domainPrefix + ".cn/";
      }

      return domainPrefix + ".com/";
    }

    function getBadgeKeyQueryParams(badge) {
      return Array.prototype.slice.call(badge.attributes).filter(function (attr) {
        return attr.name.lastIndexOf('data-key-', 0) !== -1;
      }).map(function (attr) {
        // Most browsers automatically lowercase the attribute name when its being read
        // We are calling lowercase on it again to ensure consistency for any browsers that are lagging behind.
        return encodeURIComponent(attr.name.replace('data-', '').toLowerCase()) + '=' + encodeURIComponent(attr.value);
      });
    }

    /*
    * Renders a single badge on the page
    * @param badge: div element of badge to render
    */
    function renderBadge(badge) {
      var size       = badge.getAttribute('data-size'),
          locale     = badge.getAttribute('data-locale'),
          type       = badge.getAttribute('data-type'),
          theme      = badge.getAttribute('data-theme'),
          vanity     = badge.getAttribute('data-vanity'),
          version    = badge.getAttribute('data-version'),
          isEI       = badge.hasAttribute('data-ei'),
          entity     = badge.getAttribute('data-entity'),
          isCreatePage = badge.hasAttribute('data-iscreate'),
          uid        = Math.round(1000000 * Math.random()),
          baseUrl = generateUrl(isEI),
          queryParams = [
            'locale=' + encodeURIComponent(locale),
            'badgetype=' + encodeURIComponent(type),
            'badgetheme=' + encodeURIComponent(theme),
            'uid=' + encodeURIComponent(uid),
            'version=' + encodeURIComponent(version)
          ],
          url;

      if (version === 'v2') {
        baseUrl += 'view';
        queryParams.push('badgesize=' + encodeURIComponent(size));
        queryParams.push('entity=' + encodeURIComponent(entity));
        queryParams = queryParams.concat(getBadgeKeyQueryParams(badge));
      } else {
        baseUrl += 'profile';
        queryParams.push('maxsize=' + encodeURIComponent(size));
        queryParams.push('trk=' + encodeURIComponent(TRACKING_PARAM));
        queryParams.push('vanityname=' + encodeURIComponent(vanity));
      }

      if (isCreatePage) {
        queryParams.push('fromCreate=true');
      }

      url = baseUrl + '?' + queryParams.join('&');
      badge.setAttribute('data-uid' , uid);
      jsonp(url); //Calls responseHandler when done
    }

    /**
    * Handles a response from the server. Finds badge matching badgeUid and inserts badgeHtml there
    * @param badgeHtml: String representing contents of the badge
    * @param badgeUid: UID of the badge to target
    **/
    function responseHandler(badgeHtml, badgeUid) {
      responsesReceived ++;

      var i, badge, uid, isCreate;
      var defaultWidth = 330 // max possible width
      var defaultHeight = 300 // max possible height

      for (i = 0, len = badges.length; i < len; i++) {
        badge = badges[i];
        // isCreate needed to prevent reloading artdeco script tag
        isCreate = badge.getAttribute('data-iscreate');
        uid   = parseInt(badge.getAttribute('data-uid'), 10);
        if (uid === badgeUid) {
          var badgeMarkup = `<body>${badgeHtml}</body>`
          var iframe = document.createElement('iframe');
          iframe.onload = function() {
            var iframeBody = iframe.contentWindow.document.body;
            // 5 px buffer to avoid the badge border being cut off.
            iframe.setAttribute('height', (iframeBody.scrollHeight || defaultHeight) + 5);
            iframe.setAttribute('width', (iframeBody.scrollWidth || defaultWidth) + 5);
          };
          iframe.setAttribute('frameBorder', '0');
          iframe.style.display = 'block';
          badge.appendChild(iframe);
          iframe.contentWindow.document.open();
          iframe.contentWindow.document.write(badgeMarkup);
          iframe.contentWindow.document.close();
          replaceScriptTags(badge, isCreate);
        }
      }
      tryClean();
    }

  // These functions are needed because badge markup is added via innerHtml property which does not run script tags
  function replaceScriptTags(node, isCreate) {
    if (shouldReplaceNode(node, isCreate)) {
      node.parentNode.replaceChild(cloneScriptNode(node), node);
      childScripts[node.src] = true;
    } else {
      var i = 0,
          children = node.childNodes;
      while (i < children.length) {
        replaceScriptTags(children[i++], isCreate);
      }
    }
    return node;
  }

  function shouldReplaceNode(node, isCreate) {
    return isScriptNode(node) && !childScripts[node.src] && (!isCreate || (isCreate && !node.getAttribute('data-isartdeco')));
  }

  function isScriptNode(node) {
    return node.tagName === 'SCRIPT';
  }

  function cloneScriptNode(node){
    var script  = document.createElement("script");
    for( var i = node.attributes.length-1; i >= 0; i-- ) {
      script.setAttribute( node.attributes[i].name, node.attributes[i].value );
    }
    return script;
  }

    // Gets all incoming responses
    window[CALLBACK_NAME] = responseHandler;

    /**
    * Tries to clean added tags
    **/
    function tryClean() {
      //Clean up after all requests are done..
      //Accounts for people including script more than once
      var done = (responsesReceived >= expectedResponses && expectedResponses > 0) || responsesReceived >= badges.length;
      if (done) {
        delete window[CALLBACK_NAME];

        // remove all script tags
        scripts.map(function(script){
          document.body.removeChild(script);
        });

      }
    }

    /*
    * Makes Jsonp request, responses handles by CALLBACK_NAME
    * @param url String: url of server to make request to
    */
    function jsonp(url) {
      var script = document.createElement('script');
      script.src = url;
      scripts.push(script);
      document.body.appendChild(script);
    }
  };

  if (document.readyState === 'complete') {
    window.LIRenderAll();
  } else {
    window.addEventListener('load', window.LIRenderAll, false);
  }

})(window);
Popular Posts