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
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
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
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
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 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
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.
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
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!
/* 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);