Giter Club home page Giter Club logo

extensions's Introduction

TurboWarp Extension Gallery

User-contributed unsandboxed extension gallery for TurboWarp.

https://extensions.turbowarp.org/

Contributing

See CONTRIBUTING.md.

License

Extensions (in the extensions folder) will have a comment at the top of the file describing the license for the code. In the past MIT was the default, however now MPL-2.0 is recommended. Some extensions may contain a mix of several.

Sample projects (in the samples folder) are licensed under CC-BY 4.0.

Everything else, such as the extension images, development server, and website are licensed under the GNU General Public License version 3.

See images/README.md for attribution information for each image.

extensions's People

Contributors

0832k12 avatar alestore avatar ashimee avatar bluedome77 avatar cst1229 avatar cubesteryt avatar david-orangemoon avatar dependabot[bot] avatar dnin01 avatar dt-is-not-available avatar fernyrepos avatar furryr avatar garbomuffin avatar lilymakesthings avatar mikedev101 avatar nexuskitten avatar noname-awa avatar qxsck avatar redman13 avatar samq64 avatar sharkpool-sp avatar sipc avatar skyhigh173 avatar softedco avatar theshovel avatar true-fantom avatar tutacat avatar veggiecan0419 avatar xeltalliv avatar ziqiangao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

extensions's Issues

Allow unchecked unsandboxed extensions with some sort of warning

The current issue I can see is that I want to test my extension with others. However, they are not willing to figure out how to host a server just to test it out. Perhaps some sort of warning to allow untrusted unsandboxed extensions would be good? Should probably be a very heavy "you shouldn't do this", but would be nice to have regardless

Duplicate block functionality

There are already blocks from multiple extensions that do the same thing. Something should probably be done about it eventually.

image

More docs about custom extensions and unsandboxed extensions

You could probably document the Scratch VM and other things like that for people making unsandboxed extensions, or for contributing to TW source code (as you have an api directly for unsandboxed extensions)

and the other things i have found are extremely outdated or dont contain any actual docs

An extension to stop specific sounds or play sounds from a certain time

I'm thinking of the following features that could either go in a new extension called something like "Sound Control" or become part of the Sound extension that was just added.

  • stop sound (sound v) (Would stop the sound you selected)
  • start sound (sound v) from (1.5) secs (Would play the sound you selected starting at the time you specified)
  • stop all sounds in this sprite (Would stop all of the sounds that the sprite was playing. Could potentially be a dropdown so you could select other sprites too)

You could use these features to do various things, for example:

  • To pause and resume music or narration
  • To stop sounds but not music

We need more reviewers

In order for unsandboxed extensions to thrive, we're going to need more people involved in reviewing the extensions. Having everything be bottlenecked on me will not scale.

[Question] About the new unsandboxed API

With The Unsandboxed Extention Guide. I am worried about the api NOT working with other scratch mods. expressly with schools blocking Turbowarp. while you can use stuff like Adacraft, and at this moment. It has no such API.

another thing is, why do you want the class to be inside the function instend of somthing like this?

class YourExt {
 getinfo() { return {...} }
}

(function(Scratch) {
  'use strict';
  var ExtClass = YourExt;
  Scratch.extensions.register(new ExtClass());
})(Scratch);

Problem with [Polygon] option in "Griffpatch's 2D Box Physics"

2022-11-21

The block, "Enable this [Polygon]" doesn't seem to really work. Instead, it puts the start flag into a loop, essentially meaning that the project freezes. However, when changing it to anything but [polygon] then the project will work again, whether or not the last box is [precision] or [normal]

other than that, the extension seems to be working quite well! I hope this helps with development

MP3 player extension

An extension that can can play mp3s via url and hard drive
i know that there is a Spotify extension from Scratch X
Example block:
g891

menu selection:
From URL
From File

Submit Sandboxed Extension

I just creating an extension and I was about to submit it. However, I noticed that CONTRIBUTING.md only talks about unsandboxed extensions, and mine is sandboxed.
Should I rewrite my extension to be unsandboxed, then submit it?

How to make empty defaultValue for STRING argument?

I wanted to make default argument value look like standard in Scratch 3:
Screenshot_136
At first I tried to do it like this:
Screenshot_137
But instead of empty value there was undefined
Screenshot_138
Next I used null
Screenshot_140
In this case blocks altogether was disappeared
Screenshot_141
'\0' and '\u0000' don't work either
Screenshot_142
With their use the 2nd argument of the block was broken, and subsequent blocks disappear
Screenshot_135
I really don't know what to do and would be glad if someone would help me. I am grateful in advance.

Stretch bug: stretch doesn't get cloned

Steps to reproduce:

  • Add the Stretch extension
  • Set the stretch of a sprite to something other than 100x100
  • Create a clone of the sprite
  • The stretch of the clone is reset to 100x100

Manipulate Lists and Variables in Extension

I am implementing save codes in a project. My save codes work by adding all the data to a list and encoding the list into a string with a delimiter between items. However, the save codes can get massive, and in turbowarp, they take several minutes to parse. I have tried optimizing my script, enabling run without screen refresh, etc. - but it's still too slow.

My solution was to rewrite the parsing script in javascript, and access it via a custom extension in my project. This works great, and the save codes get parsed almost instantly. The javascript code is simple: var result = savecode.split(",");

But my extension needs to manipulate a list. In scratch, you can use list functions like add [thing] to [mylist].
According to Leopard, you can access all variables and lists using this.stage.vars in javascript. However, this represents a different object in my extension class. When I try using this.stage.vars.Result = result;, I get an error:

Custom extension block error TypeError: Cannot read properties of undefined (reading 'vars')

So, how can I access lists and variables in my extension? My extension needs to be sandboxed, by the way.

Box2D extension incompatibility between original and TurboWarp version

In original extension all block dropdowns are round inputs, in TurboWarp version they are square inputs.

Because of this mismatch, when trying to open projects that were made in original, in TurboWarp, all dropdowns reset to the first option from the list. When trying to open projects that were made in TurboWarp, in original, all dropdowns become empty round inputs.

Potential Future of Extensions

This is an idea for what the future of extensions could be like.

Scratch Children Properties

Scratch.blocks

Scratch.blocks could be an object containing functions that can be called to execute blocks. Vanilla Scratch blocks can be executed here (except motion, sound, and music blocks, as that could be annoying and unwanted to the user.)
Some blocks with large power over sprites or simply blocks that could do unwanted actions to the user could require permission from the user. Whether that be a simple confirm prompt or a custom popup, that part does not matter.

Scratch.extensions

Scratch.extensions.register

A class reference should be passed to this function, to load an extension into Turbowarp.

Main class's getInfo() configuration properties

Main Class's getInfo().allowExternal

The allowExternal is a boolean value that can control whether other extensions can use them via Scratch.blocks. If it is not specified, or is undefined, than it will default to true. If it is changed after the class is first called, then the changes are to be ignored.

Main Class's getInfo().visible

This property allows an extension to specify if it is visible to the user. This is useful for extensions meant to be used as dependencies for other blocks. Turbowarp is to check if it has changed every frame, and if it has, then the block's visibility is to be updated. If it is changed, it will not affect the blocks the user has already placed, but become invisible from the toolbar. If it is not specified, or is undefined, than it will default to true.

Main Class's getInfo().dependencies

This is an array full of URLs to extensions that this one depends on to function. For built-in extensions, it is simply the extension's name, with the first letter capitalized. If it is not specified, is undefined, or it is not an array-like object, it defaults to an empty array. If this extension has any dependencies, the user must be notified of the dependencies that will be installed with the extension they originally intended to install. Not only the name of this extension must be specified, but the URL must also be specified to the user so that a misleading name does not trick the user into installing a potentially unwanted extension. If it is a built-in extension, one that you might include in a project using the built-in "Choose an extension" menu, then the URL is not provided, and simply the name, with a note telling the user this is the legitimate scratch extension and not a misleadingly named one.

add a assets/ dir

This assets dir would let extent ion devs not deal with CORS, for stuff like sound and imgs

Unknown extension error.

I have lost a projects source to the 'Could not load project: Error: Unknown extension' error because I am unable to open it.
Is there a way I can get the original project back without it loading the non-existing extension?

A MIDI extension

I'm interested in seeing what kinds of projects I could make for myself if I could control them with MIDI devices. It could allow the making of projects that teach people how to play an instrument or that can be used to make songs by recording.

Lack of hierarchy will not scale for personal extensions

Currently unsandboxed custom extensions are limited to this repository. And considering #61 it is unlikely that another way of placing them will appear in the near future. This is where the problem arises, which I myself have already encountered 3 times. If any extension already exists, and one wants to add a similar one or make an alternative version, it will clog the directory and will not be accepted. This greatly limits the extension-creators! TurboWarp is a platform for everyone, and it would be right to keep this policy in relation to custom extensions!

Personally, I came up with such a solution method:
The ability to create a personal folder in /extensions/ that will not interfere with the main directory.
Screenshot_430
Or create a separate folder in the main.
Screenshot_431

This is just my suggestion for a solution, but the problem somehow needs to be fixed.

where to i go to host the extension?

i am trying to make my own extension, but i don't know how to put it somewhere so i can actually use the extension, i tried just loading the file url on turbowarp, but that didn't work, so where can i go to get a place to put the code so i can actually use it on turbowarp.

Feature request

Could you add an option to immediately go to select a file location when uploading a file instead of the pop up?

Thanks

Save file list

When saving a list using the file extension like this, the whole list will be on 1 string.
It should save the list on different rows, as many people will try to do that, and be confused.
Also probably should add a load to list block to format it correctly.

Gamepad extension bug: Direction of axes reporter block sometimes does not respond to vertical stick axis

Description

I was experimenting with making one of my projects (specifically, this one) play with a game controller when I ran into a problem with one of the blocks in the Gamepad extension...

Expected behavior: The result of direction of axes (...) on pad (...) block should range from 0 to 360.

Actual behavior: The result of that block is either 90 or 270 (only accounts for horizontal stick position) until I delete certain sprites.

To reproduce...

  1. Download the linked project
  2. Open the editor with the Gamepad extension
  3. Load the project. You don't even have to run it.
  4. Scroll down to the Gamepad blocks
  5. Hold the stick in a diagonal direction while clicking the direction of axes (...) on pad (...) block. Check the result.

Happens whether the gamepad addon is on or off.
I checked some other projects, some of which also show the same problem: griffpatch celeste, SPACEBEAT, and Appel.
magnitude of axes (...) on pad (...) is also affected, but value of axes (...) on pad (...) and the gamepad addon both seem to be completely fine.

Environment

Operating System: Windows 10 / Browser: Edge 108.0.1462.46 (Official build) (64-bit)
Controller: Xbox Wireless Controller (connected via USB)
Scratch Project: https://scratch.mit.edu/projects/502715906/

save & open file extension

4 blocks:
Save file with name and data, save automatic in project folder
scratchblocks (7)
Save file with name and data, save in selected by user folder
scratchblocks (8)
Open file with name, open automatic from project folder
scratchblocks (9)
Open file with name, open from selected by user folder
scratchblocks (10)

Avoid using "unsandboxed" in user-facing pages

In computing, "unsandboxed extensions" or "unsandboxed plugins" have a bad history (see "flash" and "java"). We should avoid using that word, and use something that is both more descriptive and less scary to users.

image

Make the website look better

If you look at the website right now, you will notice that it is rather ugly. If anyone wants to make an attempt at making it look better, you're more than welcome to try

Help us create images for all of the extensions

Scroll to the end of the comments to see what extension images we need

It's not a secret that I am not a graphics designer. So, instead, we hope to crowdsource images for the extensions. This issue is the place where we will do that.

Extension images must be:

  • 2:1 aspect ratio
  • SVG (preferred), PNG, or JPG
  • If PNG or JPG, 600x300 resolution

You can post proposed images here or try to figure out how to submit a pull request if you're in the mood

☁ Ping custom cloud server. ☁

A block that can send a ping to a custom cloud server and get a response via a boolean block if the server status is online will return true else if the server is offline or doesn't get any response back during a certain amount of time will return false.
(Tried messing with the fetch extension, but doesn't work like so: http://localhost:9080/Status.txt (Dislays the text "Online"))
Would be amazing to see an extension like this and help make our projects work online properly :)

Joysticks Are Laggy

Whenever I try to access an control stick on my controller it works, then stops, then works again, before stopping again. If i feed the input of the joystick into a controller it shows a solid input that stays the same number it should be.

Strange situation with the display of reporter monitor❓

Recently I created reporter block with menu:
Screenshot_145
Since there were no input fields in it, monitor had to work. In fact, its true, but there is error with the display. Instead of the value of menu's argument, displayed its name in []
Screenshot_146
Code looks like this:
Screenshot_147
As I understand it, name of monitor is directly text of block, without taking into arguments

But if this is case, then it becomes unclear how it works:
Screenshot_150
Screenshot_151
Even if Scratch 3 blocks didn't have this bug, monitor text would look like: "current year" or "current month"

It seems that monitor should have extra settings of displayed text for each argument value

I haven't found any information anywhere, so I would be very grateful if someone would tell me if this is bug, or if there additional parameters for the monitor. I am grateful in advance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.