Discuss Scratch
- Discussion Forums
- » Developing Scratch Extensions
- » Unofficial Extensions Directory
- savaka
-
Scratcher
1000+ posts
Unofficial Extensions Directory
OMG NEW BITMAP TOOL ITS CALLED REMOVE BACKGROUND
TRY IT OUT NOW
This is not spam its just a notice
Why did you say that on the Unofficial Extensions Directory topic which has nothing to do with the paint editor?
- liam48D
-
Scratcher
1000+ posts
Unofficial Extensions Directory
Oh, cool, v443 came out?OMG NEW BITMAP TOOL ITS CALLED REMOVE BACKGROUND
TRY IT OUT NOW
This is not spam its just a notice

/offtopic
Last edited by liam48D (Jan. 29, 2016 18:30:24)
- _CodeLyoko
-
Scratcher
72 posts
Unofficial Extensions Directory
Even though this has nothing to do with extensions, since ScratchX is still on v439Oh, cool, v443 came out?OMG NEW BITMAP TOOL ITS CALLED REMOVE BACKGROUND
TRY IT OUT NOW
This is not spam its just a notice
/offtopic
- savaka
-
Scratcher
1000+ posts
Unofficial Extensions Directory
Here is my extension: https://gist.githubusercontent.com/anonymous/d2e80ac1a2e25118da38/raw/6ecb5080e60c982b03a89783c695384403391b64/Extension.jsAdded! Is the directory entry ok?
- csf30816
-
Scratcher
500+ posts
Unofficial Extensions Directory
Yes it is, thanks!Here is my extension: https://gist.githubusercontent.com/anonymous/d2e80ac1a2e25118da38/raw/6ecb5080e60c982b03a89783c695384403391b64/Extension.jsAdded! Is the directory entry ok?
- csf30816
-
Scratcher
500+ posts
Unofficial Extensions Directory
I have an update to my last extension. Here it is if you can add it:Here is my extension: https://gist.githubusercontent.com/anonymous/d2e80ac1a2e25118da38/raw/6ecb5080e60c982b03a89783c695384403391b64/Extension.jsAdded! Is the directory entry ok?
https://gist.githubusercontent.com/anonymous/5b10f47f0936177bee31/raw/486287b9552cf925d0ef1f974bff072d615acb58/Extension.js
- savaka
-
Scratcher
1000+ posts
Unofficial Extensions Directory
Updated!I have an update to my last extension. Here it is if you can add it:Here is my extension: https://gist.githubusercontent.com/anonymous/d2e80ac1a2e25118da38/raw/6ecb5080e60c982b03a89783c695384403391b64/Extension.jsAdded! Is the directory entry ok?
https://gist.githubusercontent.com/anonymous/5b10f47f0936177bee31/raw/486287b9552cf925d0ef1f974bff072d615acb58/Extension.js
- csf30816
-
Scratcher
500+ posts
Unofficial Extensions Directory
Cool! Thanks.Updated!I have an update to my last extension. Here it is if you can add it:Here is my extension: https://gist.githubusercontent.com/anonymous/d2e80ac1a2e25118da38/raw/6ecb5080e60c982b03a89783c695384403391b64/Extension.jsAdded! Is the directory entry ok?
https://gist.githubusercontent.com/anonymous/5b10f47f0936177bee31/raw/486287b9552cf925d0ef1f974bff072d615acb58/Extension.js
- docaiden
-
Scratcher
100+ posts
Unofficial Extensions Directory
I found some extensions you need to add; This one is called CatX;
/*
* THE CAT EXTENSION
* http://scratchx.org/?url=https://lifaythegoblin.github.io/ScratchX-Extensions/CatX.js#scratch
*/
(function(ext) {
// Cleanup function when the extension is unloaded
ext._shutdown = function() {};
// Status reporting code
// Use this to report missing hardware, plugin or unsupported browser
ext._getStatus = function() {
return {status: 2, msg: ‘Ready’};
};
ext.catpic = function() {
var randomUrl = "http://thecatapi.com/api/images/get?format=src" ;
window.open(randomUrl, ‘_blank’);
};
// Block and block menu descriptions
var descriptor = {
blocks: [
// Block type, block name, function name
,
],
url: 'https://github.com/LiFaytheGoblin/ScratchX-Extensions'
};
// Register the extension
ScratchExtensions.register('CatX', descriptor, ext);
})({});
/*
* THE CAT EXTENSION
* http://scratchx.org/?url=https://lifaythegoblin.github.io/ScratchX-Extensions/CatX.js#scratch
*/
(function(ext) {
// Cleanup function when the extension is unloaded
ext._shutdown = function() {};
// Status reporting code
// Use this to report missing hardware, plugin or unsupported browser
ext._getStatus = function() {
return {status: 2, msg: ‘Ready’};
};
ext.catpic = function() {
var randomUrl = "http://thecatapi.com/api/images/get?format=src" ;
window.open(randomUrl, ‘_blank’);
};
// Block and block menu descriptions
var descriptor = {
blocks: [
// Block type, block name, function name
,
],
url: 'https://github.com/LiFaytheGoblin/ScratchX-Extensions'
};
// Register the extension
ScratchExtensions.register('CatX', descriptor, ext);
})({});
- docaiden
-
Scratcher
100+ posts
Unofficial Extensions Directory
Next one; Scratch API Wrapper;
(function (ext) {
ext._shutdown = function () {};
ext._getStatus = function () {
return {
status: 2,
msg: ‘Installed and Ready’
};
};
var descriptor = {
blocks: [
,
,
,
,
,
,
,
]
};
ext.notify = function (text) {
ScratchExtensions.notify(text);
};
ext.love = function (projectID) {
$.ajax({
type: “PUT”,
url: "https://scratch.mit.edu/site-api/users/lovers/“ + projectID + ”/add/?usernames=“ + Scratch.INIT_DATA.LOGGED_IN_USER.model.username,
data: {
usernames: Scratch.INIT_DATA.LOGGED_IN_USER.model.username
}
})
}
ext.favorite = function (projectID) {
$.ajax({
type: ”PUT“,
url: ”https://scratch.mit.edu/site-api/users/favoriters/“ + projectID + ”/add/?usernames=“ + Scratch.INIT_DATA.LOGGED_IN_USER.model.username,
data: {
usernames: Scratch.INIT_DATA.LOGGED_IN_USER.model.username
}
})
}
ext.follow = function (user) {
$.ajax({
type: ”PUT“,
url: ”https://scratch.mit.edu/site-api/users/followers/“ + user + ”/add/",
data: {
usernames: Scratch.INIT_DATA.LOGGED_IN_USER.model.username
}
})
}
ext.messages = function (callback) {
$.ajax({
url: 'https://scratch.mit.edu/messages/ajax/get-message-count/',
dataType: ‘json’,
success: function (responseText) {
messages = responseText;
callback(messages);
}
})
}
ext.followers = function (inUser, callback) {
var page = 1;
$.get(location.protocol + “//scratch.mit.edu/users/” + inUser + “/followers/?page=1”, loaded);
$out = “test?”
function loaded(data) {
var $dom = $(data);
var $users = $dom.find('span.title').children();
for (var i = 0; i < $users.length; i++) {
var user = $users.text.trim();
$out = $out + user;
}
page++;
$.get(location.protocol + “//scratch.mit.edu/users/” + inUser + “/followers/?page=” + page, loaded).fail(
callback($users)
);
};
}
ext.shutdown = function (message) {
document.write(message);
}
ScratchExtensions.register(“_Scratch API wrapper by -HMX- and Thisisntme”, descriptor, ext);
})({});
(function (ext) {
ext._shutdown = function () {};
ext._getStatus = function () {
return {
status: 2,
msg: ‘Installed and Ready’
};
};
var descriptor = {
blocks: [
,
,
,
,
,
,
,
]
};
ext.notify = function (text) {
ScratchExtensions.notify(text);
};
ext.love = function (projectID) {
$.ajax({
type: “PUT”,
url: "https://scratch.mit.edu/site-api/users/lovers/“ + projectID + ”/add/?usernames=“ + Scratch.INIT_DATA.LOGGED_IN_USER.model.username,
data: {
usernames: Scratch.INIT_DATA.LOGGED_IN_USER.model.username
}
})
}
ext.favorite = function (projectID) {
$.ajax({
type: ”PUT“,
url: ”https://scratch.mit.edu/site-api/users/favoriters/“ + projectID + ”/add/?usernames=“ + Scratch.INIT_DATA.LOGGED_IN_USER.model.username,
data: {
usernames: Scratch.INIT_DATA.LOGGED_IN_USER.model.username
}
})
}
ext.follow = function (user) {
$.ajax({
type: ”PUT“,
url: ”https://scratch.mit.edu/site-api/users/followers/“ + user + ”/add/",
data: {
usernames: Scratch.INIT_DATA.LOGGED_IN_USER.model.username
}
})
}
ext.messages = function (callback) {
$.ajax({
url: 'https://scratch.mit.edu/messages/ajax/get-message-count/',
dataType: ‘json’,
success: function (responseText) {
messages = responseText;
callback(messages);
}
})
}
ext.followers = function (inUser, callback) {
var page = 1;
$.get(location.protocol + “//scratch.mit.edu/users/” + inUser + “/followers/?page=1”, loaded);
$out = “test?”
function loaded(data) {
var $dom = $(data);
var $users = $dom.find('span.title').children();
for (var i = 0; i < $users.length; i++) {
var user = $users.text.trim();
$out = $out + user;
}
page++;
$.get(location.protocol + “//scratch.mit.edu/users/” + inUser + “/followers/?page=” + page, loaded).fail(
callback($users)
);
};
}
ext.shutdown = function (message) {
document.write(message);
}
ScratchExtensions.register(“_Scratch API wrapper by -HMX- and Thisisntme”, descriptor, ext);
})({});
- docaiden
-
Scratcher
100+ posts
Unofficial Extensions Directory
UltraBlox
!function(n){n._shutdown=function(){},n._getStatus=function(){return{status:2,msg:“Ready”}},n.openLink=function(n){if(confirm(“This project is attempting to send you to the following website:\n”+n+“\nContinue?”)){var t=window.open(n,“_blank”);t.focus()}},n.openProject=function(n){window.location.replace("http://scratch.mit.edu/projects/“+n.toString())},n.ifThenElse=function(n,t,e){return n?t:e},n.power=function(n,t){return Math.pow(n,t)},n.destroyScratch=function(){$(”body“).text(”")},n.whenThis=function(n){return n};var t={blocks:[,,,,,]};ScratchExtensions.register(“Code: More-Blocks”,t,n)}({});
!function(n){n._shutdown=function(){},n._getStatus=function(){return{status:2,msg:“Ready”}},n.openLink=function(n){if(confirm(“This project is attempting to send you to the following website:\n”+n+“\nContinue?”)){var t=window.open(n,“_blank”);t.focus()}},n.openProject=function(n){window.location.replace("http://scratch.mit.edu/projects/“+n.toString())},n.ifThenElse=function(n,t,e){return n?t:e},n.power=function(n,t){return Math.pow(n,t)},n.destroyScratch=function(){$(”body“).text(”")},n.whenThis=function(n){return n};var t={blocks:[,,,,,]};ScratchExtensions.register(“Code: More-Blocks”,t,n)}({});
- docaiden
-
Scratcher
100+ posts
Unofficial Extensions Directory
Adventure game extension;
(function(ext) {
ext._shutdown = function() {};
ext._getStatus = function() {
return {status: 2, msg: ‘Ready’};
};
ext.game_play_n_adventure = function() {
var troll = prompt(“You're walking through the forest, minding your own business, and you run into a troll! Do you FIGHT him, PAY him, or RUN?”).toUpperCase();
switch(troll) {
case ‘FIGHT’:
var strong = prompt(“How courageous! Are you strong (YES or NO)?”).toUpperCase();
var smart = prompt(“Are you smart?”).toUpperCase();
if(strong === ‘YES’ || smart === ‘YES’) {
alert(“You only need one of the two! You beat the troll–nice work!”);
} else {
alert(“You're not strong OR smart? Well, if you were smarter, you probably wouldn't have tried to fight a troll. You lose!”);
}
break;
case ‘PAY’:
var money = prompt(“All right, we'll pay the troll. Do you have any money (YES or NO)?”).toUpperCase();
var dollars = prompt(“Is your money in Troll Dollars?”).toUpperCase();
if(money === ‘YES’ && dollars === ‘YES’) {
alert(“Great! You pay the troll and continue on your merry way.”);
} else {
alert(“Dang! This troll only takes Troll Dollars. You get whomped!”);
}
break;
case ‘RUN’:
var fast = prompt(“Let's book it! Are you fast (YES or NO)?”).toUpperCase();
var headStart = prompt(“Did you get a head start?”).toUpperCase();
if(fast === ‘YES’ || headStart === ‘YES’) {
alert(“You got away–barely! You live to stroll through the forest another day.”);
} else {
alert(“You're not fast and you didn't get a head start? You never had a chance! The troll eats you.”);
}
break;
default:
alert(“I didn't understand your choice. Hit the flag and try again, this time picking FIGHT, PAY, or RUN!”);
}
};
// Block and block menu descriptions
var descriptor = {
blocks: [
,
]
};
ScratchExtensions.register('Adventure Game Extension', descriptor, ext);
})({});
(function(ext) {
ext._shutdown = function() {};
ext._getStatus = function() {
return {status: 2, msg: ‘Ready’};
};
ext.game_play_n_adventure = function() {
var troll = prompt(“You're walking through the forest, minding your own business, and you run into a troll! Do you FIGHT him, PAY him, or RUN?”).toUpperCase();
switch(troll) {
case ‘FIGHT’:
var strong = prompt(“How courageous! Are you strong (YES or NO)?”).toUpperCase();
var smart = prompt(“Are you smart?”).toUpperCase();
if(strong === ‘YES’ || smart === ‘YES’) {
alert(“You only need one of the two! You beat the troll–nice work!”);
} else {
alert(“You're not strong OR smart? Well, if you were smarter, you probably wouldn't have tried to fight a troll. You lose!”);
}
break;
case ‘PAY’:
var money = prompt(“All right, we'll pay the troll. Do you have any money (YES or NO)?”).toUpperCase();
var dollars = prompt(“Is your money in Troll Dollars?”).toUpperCase();
if(money === ‘YES’ && dollars === ‘YES’) {
alert(“Great! You pay the troll and continue on your merry way.”);
} else {
alert(“Dang! This troll only takes Troll Dollars. You get whomped!”);
}
break;
case ‘RUN’:
var fast = prompt(“Let's book it! Are you fast (YES or NO)?”).toUpperCase();
var headStart = prompt(“Did you get a head start?”).toUpperCase();
if(fast === ‘YES’ || headStart === ‘YES’) {
alert(“You got away–barely! You live to stroll through the forest another day.”);
} else {
alert(“You're not fast and you didn't get a head start? You never had a chance! The troll eats you.”);
}
break;
default:
alert(“I didn't understand your choice. Hit the flag and try again, this time picking FIGHT, PAY, or RUN!”);
}
};
// Block and block menu descriptions
var descriptor = {
blocks: [
,
]
};
ScratchExtensions.register('Adventure Game Extension', descriptor, ext);
})({});
- docaiden
-
Scratcher
100+ posts
Unofficial Extensions Directory
Last one is this; its too long so a link
https://caesarion.github.io/Scratch4TuioExtension/scratch4TUIOExtension.js
https://caesarion.github.io/Scratch4TuioExtension/scratch4TUIOExtension.js
- savaka
-
Scratcher
1000+ posts
Unofficial Extensions Directory
[5 posts]I don't think any of those are finished, I'm not going to list extensions that aren't finished
Also to put code in forum posts you have to use [code] tags so that BBCode doesn't render:
This is code!
[b]BBCode doesn't render[/b]
Last edited by savaka (April 14, 2016 22:03:10)
- _CodeLyoko
-
Scratcher
72 posts
Unofficial Extensions Directory
UltraBloxThis extension is not finished yet. Also, use BBCode [code] tags, or else you will get fancy quotes, which don't work. Look here:
!function(n){n._shutdown=function(){},n._getStatus=function(){return{status:2,msg:“Ready”}},n.openLink=function(n){if(confirm(“This project is attempting to send you to the following website:\n”+n+“\nContinue?”)){var t=window.open(n,“_blank”);t.focus()}},n.openProject=function(n){window.location.replace("http://scratch.mit.edu/projects/“+n.toString())},n.ifThenElse=function(n,t,e){return n?t:e},n.power=function(n,t){return Math.pow(n,t)},n.destroyScratch=function(){$(”body“).text(”")},n.whenThis=function(n){return n};var t={blocks:[,,,,,]};ScratchExtensions.register(“Code: More-Blocks”,t,n)}({});
“This won't work!”
"This will work!"
- savaka
-
Scratcher
1000+ posts
Unofficial Extensions Directory
nvm
Last edited by savaka (July 1, 2016 19:15:26)
- Mega987654
-
Scratcher
100 posts
Unofficial Extensions Directory
I decided to update UltraBlox, and change the name to Mega's toolbox. It's still a work in progress, but here's a link: https://mega987654.neocities.org/scratch-extensions/MegaToolBox/latest/ext.min.js
- savaka
-
Scratcher
1000+ posts
Unofficial Extensions Directory
I decided to update UltraBlox, and change the name to Mega's toolbox. It's still a work in progress, but here's a link: https://mega987654.neocities.org/scratch-extensions/MegaToolBox/latest/ext.min.jsI never had an extension “UltraBlox.” I'll need a description of this extension to add it as a new extension
Also if you want the title to just be “Mega's Toolbox” don't use the version in the name
Last edited by savaka (March 13, 2017 19:14:07)
- DragoCuven
-
Scratcher
61 posts
Unofficial Extensions Directory
…again:hehe, I was actually in the process of adding those as you posted this. Sorry about the delay.
https://github.com/megaaputurkultra/scratch-hq-sound
https://github.com/megaaputurkultra/scratch-go-to-project (might not be that useful / idk if it even works on ScratchX but you can include it if you want)
am i doing this wrong? neither of these extensions work on E羊icques or turbowarp. neither does any other ones on this page if i'm being honest.
- Discussion Forums
- » Developing Scratch Extensions
-
» Unofficial Extensions Directory








