This Siri Shortcut Can Modify your Projects | ๐“๐”€๐“ฎ๐“ผ๐“ธ๐“ถ๐“ฎ_๐“”

Today, I made a Shortcut which allows the user to modify their Hopscotch JSON project file

Letโ€™s get a few things out of the way before I get to the main thing:

  1. I know that modifying the JSON file isnโ€™t new, there is already a topic on that. However, this Shortcut is the best way to do this on an iOS device.
  2. You donโ€™t need anything except for the two shortcuts, an internet connection (only for checking for updates), and Hopscotch to do this.
  3. It is not a raw editor, but a guided editor (mostly). In my case, this means that when you open the file for editing, you will be asked what specific traits youโ€™d like to change and what you want them to be without having to deal with cleaning up or messing up the code.
  4. There are a few reference files or lists that may be helpful to have, I will post them here. This includes block IDโ€™s (if you want to edit the ae_json_edit ability) as well as copy+pastable code. (But now you donโ€™t really need to copy secret blocks)

Download in this order:

  1. View Dictionary Lets you view the project nicely
  2. Generate UUID Updated to not need internet, used to create scenes and abilities
  3. Hopscotch JSON Shortcut v1.4.1 This one lets you modify your Hopscotch project file
  4. Stand-Alone Shortcut for Share Sheet Run this from the share sheet, main shortcut got too big
Old shortcut links because you want to rack up the clicks
  1. Generate Hopscotch UUID You must download this one first
  2. Edit Hopscotch JSON Generate Hopscotch UUID must be installed for certain functionalities
    (The second shortcut is the main one)
  3. View Dictionary because why not

What does the UUID do? When creating another scene, I have it create an object in the scene so it does not look like the project was lost. To generate this object, it must have a Universally Unique Identifier (UUID) to identify the object. Why my UUID generator? Hopscotch has a slightly different format to follow with UUIDs, so I made it compatible with my second Shortcut.

What can this Shortcut do? Well, it can:

  1. Change the Stage Size
  2. Manage Scenes: changing the default, renaming, adding, or deleting scenes
  3. Change the Webplayer Version (Read more by searching the Forum)
  4. Change the edited at date and time
  5. Modify Basic Attributes of an object. These include position, width and height (though they donโ€™t do anything), name, and filename (the image it refers to in order to draw it), and the type (identifies what character or shape it is). Please not that the object must have a rule for this to work (it can be game start wait zero for simplicity).
  6. Base Object Scale: This scales characters by a certain multiplier (default is 1)
  7. Font Size: Smaller fonts can fit more text on one line, larger has better quality
  8. Variables: Edit all game variables in raw code. This allows you to change the name, ID (ID will mess it up though), etc. but you can also delete variables by deleting the cluster or JSON code that makes it up (no more velocity!)
  9. Edit the rules contained in a custom rule
  10. Edit traits of a rule. Modify parameters or copy the abilityID.
  11. Abilities: Edits raw JSON-like code for the projectโ€™s โ€œae_json_editโ€ ability. Change IDs of certain blocks here, add parameters, do whatever here. It will all show up in the โ€œae_json_editโ€ ability when you reopen the project. You can also add any MIDI song to a project and edit any ability given its UUID from above or found in a control script of a collapsable block.

What could I use it for?

  • Messing with parameters in blocks
  • Adding multiple scenes and switching between them
  • Reviving objects you lost at position (10000, 10000)
  • Hiding objects at position (10000, 10000)
  • Seeing how different blocks react with odd parameters or IDโ€™s.
  • Discovering that the set color parameter is weird

How do I use it? There are instructions in the comment block of the Shortcut, orโ€ฆ

You can find an extensive help guide here (still WIP).

Here are the IDs for Blocks
var HSBlockType;

!function(a) {
    a[a.WaitTilTimestamp = 19] = "WaitTilTimestamp", a[a.None = 22] = "None", a[a.Move = 23] = "Move", 
    a[a.Rotate = 24] = "Rotate", a[a.ChangeX = 27] = "ChangeX", a[a.ChangeY = 28] = "ChangeY", 
    a[a.Scale = 29] = "Scale", a[a.Clear = 30] = "Clear", a[a.StrokeWidth = 31] = "StrokeWidth", 
    a[a.StrokeColor = 32] = "StrokeColor", a[a.ChangeCostume = 33] = "ChangeCostume", 
    a[a.ChangeSpeed = 34] = "ChangeSpeed", a[a.Wait = 35] = "Wait", a[a.SetOpacity = 36] = "SetOpacity", 
    a[a.PenDown = 37] = "PenDown", a[a.PenUp = 38] = "PenUp", a[a.SetHeading = 39] = "SetHeading", 
    a[a.SetText = 40] = "SetText", a[a.SetPosition = 41] = "SetPosition", a[a.SendToBack = 42] = "SendToBack", 
    a[a.BringToFront = 43] = "BringToFront", a[a.ChangeVariable = 44] = "ChangeVariable", 
    a[a.SetVariable = 45] = "SetVariable", a[a.MoveWithTrail = 46] = "MoveWithTrail", 
    a[a.SetInvisibility = 47] = "SetInvisibility", a[a.Grow = 48] = "Grow", a[a.Shrink = 49] = "Shrink", 
    a[a.Flip = 50] = "Flip", a[a.SetSize = 51] = "SetSize", a[a.PlaySound = 52] = "PlaySound", 
    a[a.MakeAClone = 53] = "MakeAClone", a[a.SetColor = 54] = "SetColor", a[a.Destroy = 55] = "Destroy", 
    a[a.SetImage = 56] = "SetImage", a[a.SetWidthAndHeight = 57] = "SetWidthAndHeight", 
    a[a.SetZIndex = 58] = "SetZIndex", a[a.SetOriginXY = 59] = "SetOriginXY", a[a.SetCenterXY = 60] = "SetCenterXY", 
    a[a.WaitSeconds = 61] = "WaitSeconds", a[a.LeaveATrail = 26] = "LeaveATrail", a[a.Repeat = 120] = "Repeat", 
    a[a.RepeatForever = 121] = "RepeatForever", a[a.CheckOnceIf = 122] = "CheckOnceIf", 
    a[a.Ability = 123] = "Ability", a[a.CheckIfElse = 124] = "CheckIfElse", a[a.ChangeScene = 125] = "ChangeScene", 
    a[a.Random = 233] = "Random", a[a.XPos = 234] = "XPos", a[a.YPos = 235] = "YPos", 
    a[a.Random110 = 236] = "Random110", a[a.Random1100 = 237] = "Random1100", a[a.Random11000 = 238] = "Random11000", 
    a[a.Variable = 239] = "Variable", a[a.ConditionalOperatorEquals = 1e3] = "ConditionalOperatorEquals", 
    a[a.ConditionalOperatorNotEquals = 1001] = "ConditionalOperatorNotEquals", a[a.ConditionalOperatorLessThan = 1002] = "ConditionalOperatorLessThan", 
    a[a.ConditionalOperatorGreaterThan = 1003] = "ConditionalOperatorGreaterThan", a[a.ConditionalOperatorAnd = 1004] = "ConditionalOperatorAnd", 
    a[a.ConditionalOperatorOr = 1005] = "ConditionalOperatorOr", a[a.ConditionalOperatorGreaterThanOrEqualTo = 1006] = "ConditionalOperatorGreaterThanOrEqualTo", 
    a[a.ConditionalOperatorLessThanOrEqualTo = 1007] = "ConditionalOperatorLessThanOrEqualTo", 
    a[a.HS_END_OF_CONDITIONAL_OPERATORS = 1008] = "HS_END_OF_CONDITIONAL_OPERATORS", 
    a[a.TraitRotation = 2e3] = "TraitRotation", a[a.TraitXPosition = 2001] = "TraitXPosition", 
    a[a.TraitYPosition = 2002] = "TraitYPosition", a[a.TraitInvisibility = 2003] = "TraitInvisibility", 
    a[a.TraitSize = 2004] = "TraitSize", a[a.TraitSpeed = 2005] = "TraitSpeed", a[a.TraitCloneIndex = 2006] = "TraitCloneIndex", 
    a[a.TraitTotalClones = 2007] = "TraitTotalClones", a[a.TraitWidth = 2008] = "TraitWidth", 
    a[a.TraitHeight = 2009] = "TraitHeight", a[a.TraitZIndex = 2010] = "TraitZIndex", 
    a[a.TraitOriginX = 2011] = "TraitOriginX", a[a.TraitOriginY = 2012] = "TraitOriginY", 
    a[a.TraitCenterX = 2013] = "TraitCenterX", a[a.TraitCenterY = 2014] = "TraitCenterY", 
    a[a.HS_END_OF_OBJECT_TRAITS = 2015] = "HS_END_OF_OBJECT_TRAITS", a[a.StageTraitWidth = 3e3] = "StageTraitWidth", 
    a[a.StageTraitHeight = 3001] = "StageTraitHeight", a[a.StageTraitTiltUp = 3002] = "StageTraitTiltUp", 
    a[a.StageTraitTiltDown = 3003] = "StageTraitTiltDown", a[a.StageTraitTiltLeft = 3004] = "StageTraitTiltLeft", 
    a[a.StageTraitTiltRight = 3005] = "StageTraitTiltRight", a[a.StageTraitLastTouchX = 3006] = "StageTraitLastTouchX", 
    a[a.StageTraitLastTouchY = 3007] = "StageTraitLastTouchY", a[a.StageTraitTotalObjects = 3008] = "StageTraitTotalObjects", 
    a[a.HS_END_OF_STAGE_TRAITS = 3009] = "HS_END_OF_STAGE_TRAITS", a[a.MathOperatorAdd = 4e3] = "MathOperatorAdd", 
    a[a.MathOperatorSubtract = 4001] = "MathOperatorSubtract", a[a.MathOperatorMultiply = 4002] = "MathOperatorMultiply", 
    a[a.MathOperatorDivide = 4003] = "MathOperatorDivide", a[a.MathOperatorRandom = 4004] = "MathOperatorRandom", 
    a[a.MathOperatorPower = 4005] = "MathOperatorPower", a[a.MathOperatorSquareRoot = 4006] = "MathOperatorSquareRoot", 
    a[a.MathOperatorSine = 4007] = "MathOperatorSine", a[a.MathOperatorCosine = 4008] = "MathOperatorCosine", 
    a[a.MathOperatorRound = 4009] = "MathOperatorRound", a[a.MathOperatorAbs = 4010] = "MathOperatorAbs", 
    a[a.MathOperatorModulo = 4011] = "MathOperatorModulo", a[a.MathOperatorTangent = 4012] = "MathOperatorTangent", 
    a[a.MathOperatorInverseSine = 4013] = "MathOperatorInverseSine", a[a.MathOperatorInverseCosine = 4014] = "MathOperatorInverseCosine", 
    a[a.MathOperatorInverseTangent = 4015] = "MathOperatorInverseTangent", a[a.MathOperatorMaximum = 4016] = "MathOperatorMaximum", 
    a[a.MathOperatorMinimum = 4017] = "MathOperatorMinimum", a[a.HS_END_OF_MATH_OPERATORS = 4018] = "HS_END_OF_MATH_OPERATORS", 
    a[a.ColorOperatorRandom = 5e3] = "ColorOperatorRandom", a[a.ColorOperatorRGB = 5001] = "ColorOperatorRGB", 
    a[a.ColorOperatorHSB = 5002] = "ColorOperatorHSB", a[a.HS_END_OF_COLOR_OPERATORS = 5003] = "HS_END_OF_COLOR_OPERATORS", 
    a[a.Rule = 6e3] = "Rule", a[a.RulePreview = 6001] = "RulePreview", a[a.EventOperatorStart = 7e3] = "EventOperatorStart", 
    a[a.EventOperatorTap = 7001] = "EventOperatorTap", a[a.EventOperatorIsTouching = 7002] = "EventOperatorIsTouching", 
    a[a.EventOperatorHold = 7003] = "EventOperatorHold", a[a.EventOperatorTiltRight = 7004] = "EventOperatorTiltRight", 
    a[a.EventOperatorTiltLeft = 7005] = "EventOperatorTiltLeft", a[a.EventOperatorTiltUp = 7006] = "EventOperatorTiltUp", 
    a[a.EventOperatorTiltDown = 7007] = "EventOperatorTiltDown", a[a.EventOperatorLoudNoise = 7008] = "EventOperatorLoudNoise", 
    a[a.EventOperatorShake = 7009] = "EventOperatorShake", a[a.EventOperatorBump = 7010] = "EventOperatorBump", 
    a[a.EventOperatorSwipeRight = 7011] = "EventOperatorSwipeRight", a[a.EventOperatorSwipeLeft = 7012] = "EventOperatorSwipeLeft", 
    a[a.EventOperatorSwipeUp = 7013] = "EventOperatorSwipeUp", a[a.EventOperatorSwipeDown = 7014] = "EventOperatorSwipeDown", 
    a[a.EventOperatorEnterTheWorld = 7015] = "EventOperatorEnterTheWorld", a[a.EventOperatorTiltRightEditor = 7016] = "EventOperatorTiltRightEditor", 
    a[a.EventOperatorTiltLeftEditor = 7017] = "EventOperatorTiltLeftEditor", a[a.EventOperatorTiltUpEditor = 7018] = "EventOperatorTiltUpEditor", 
    a[a.EventOperatorTiltDownEditor = 7019] = "EventOperatorTiltDownEditor", a[a.EventOperatorNotPressed = 7020] = "EventOperatorNotPressed", 
    a[a.EventOperatorGamePlaying = 7021] = "EventOperatorGamePlaying", a[a.HS_END_OF_EVENT_OPERATORS = 7022] = "HS_END_OF_EVENT_OPERATORS", 
    a[a.Object = 8e3] = "Object", a[a.AnyObject = 8001] = "AnyObject", a[a.ScreenEdge = 8002] = "ScreenEdge", 
    a[a.Device = 8003] = "Device", a[a.Self = 8004] = "Self", a[a.OriginalObject = 8005] = "OriginalObject", 
    a[a.HS_END_OF_EVENT_PARAMETER_BLOCKS = 8006] = "HS_END_OF_EVENT_PARAMETER_BLOCKS";
}(HSBlockType || (HSBlockType = {}));
Here are the IDs for Event Operators
var HSEventType;

!function(a) {
    a[a.HSEventOnStart = 1239] = "HSEventOnStart", a[a.HSEventTouchedObject = 1240] = "HSEventTouchedObject", 
    a[a.HSEventTapStage = 1241] = "HSEventTapStage", a[a.HSEventShake = 1242] = "HSEventShake", 
    a[a.HSEventTiltRight = 1243] = "HSEventTiltRight", a[a.HSEventTiltLeft = 1244] = "HSEventTiltLeft", 
    a[a.HSEventTiltDown = 1245] = "HSEventTiltDown", a[a.HSEventTiltUp = 1246] = "HSEventTiltUp", 
    a[a.HSEventLoudNoise = 1247] = "HSEventLoudNoise", a[a.HSEventCollision = 1248] = "HSEventCollision", 
    a[a.HSEventHeldObject = 1249] = "HSEventHeldObject", a[a.HSEventEnteredWorld = 1250] = "HSEventEnteredWorld";
}(HSEventType || (HSEventType = {}));
Here are the IDs for Characters
var HSObjectType;

!function(a) {
    a[a.monkey = 0] = "monkey", a[a.text = 1] = "text", a[a.octopus = 2] = "octopus", 
    a[a.gorilla = 3] = "gorilla", a[a.cupcake = 4] = "cupcake", a[a.bear = 5] = "bear", 
    a[a.dino = 6] = "dino", a[a.frog = 7] = "frog", a[a.greenman = 8] = "greenman", 
    a[a.mustache = 9] = "mustache", a[a.spacepod = 10] = "spacepod", a[a.zombieBear = 11] = "zombieBear", 
    a[a.ghoulopus = 12] = "ghoulopus", a[a.bats = 13] = "bats", a[a.frankenrilla = 14] = "frankenrilla", 
    a[a.jodyWitch = 15] = "jodyWitch", a[a.cauldron = 16] = "cauldron", a[a.pumpkin = 17] = "pumpkin", 
    a[a.broom = 18] = "broom", a[a.lantern = 19] = "lantern", a[a.parrotFlying = 20] = "parrotFlying", 
    a[a.mandrill = 21] = "mandrill", a[a.mosquito = 22] = "mosquito", a[a.missChief = 23] = "missChief", 
    a[a.venus = 24] = "venus", a[a.jeepers = 25] = "jeepers", a[a.banyan = 26] = "banyan", 
    a[a.stargirl = 27] = "stargirl", a[a.astro = 28] = "astro", a[a.chillanna = 29] = "chillanna", 
    a[a.robo = 30] = "robo", a[a.raccoon = 31] = "raccoon", a[a.bird = 32] = "bird", 
    a[a.HS_END_OF_CHARACTERS = 33] = "HS_END_OF_CHARACTERS", a[a.square = 34] = "square", 
    a[a.circle = 35] = "circle", a[a.hexagon = 36] = "hexagon", a[a.triangle = 37] = "triangle", 
    a[a.rightTriangle = 38] = "rightTriangle", a[a.rectangle = 39] = "rectangle", a[a.heart = 40] = "heart", 
    a[a.star = 41] = "star", a[a.arch = 42] = "arch", a[a.parallelogram = 43] = "parallelogram", 
    a[a.squiggle = 44] = "squiggle", a[a.donut = 45] = "donut", a[a.tetrisZ = 46] = "tetrisZ", 
    a[a.tetrisT = 47] = "tetrisT", a[a.tetrisL = 48] = "tetrisL", a[a.corner = 49] = "corner", 
    a[a.flower = 50] = "flower", a[a.threeProngedBoomerang = 51] = "threeProngedBoomerang", 
    a[a.squishedBox = 52] = "squishedBox", a[a.bead = 53] = "bead", a[a.chevron = 54] = "chevron", 
    a[a.xShape = 55] = "xShape", a[a.tetrisLine = 56] = "tetrisLine", a[a.HS_END_OF_SHAPES = 57] = "HS_END_OF_SHAPES", 
    a[a.toucan = 58] = "toucan", a[a.anteater = 59] = "anteater", a[a.crocodile = 60] = "crocodile", 
    a[a.sloth = 61] = "sloth", a[a.iguana = 62] = "iguana", a[a.hut = 63] = "hut", a[a.penguin = 64] = "penguin", 
    a[a.winterQueen = 65] = "winterQueen", a[a.shyYeti = 66] = "shyYeti", a[a.deer = 67] = "deer", 
    a[a.elf = 68] = "elf", a[a.snowGlobe = 69] = "snowGlobe", a[a.polarbear = 70] = "polarbear", 
    a[a.sleigh = 71] = "sleigh", a[a.mistletoe = 72] = "mistletoe", a[a.snowMan = 73] = "snowMan", 
    a[a.snowflake = 74] = "snowflake", a[a.roundedSquareFullSize = 100] = "roundedSquareFullSize", 
    a[a.squareFullSize = 101] = "squareFullSize", a[a.circleFullSize = 102] = "circleFullSize", 
    a[a.hexagonFullSize = 103] = "hexagonFullSize", a[a.triangleFullSize = 104] = "triangleFullSize", 
    a[a.rightTriangleFullSize = 105] = "rightTriangleFullSize", a[a.rectangleFullSize = 106] = "rectangleFullSize", 
    a[a.heartFullSize = 107] = "heartFullSize", a[a.starFullSize = 108] = "starFullSize", 
    a[a.archFullSize = 109] = "archFullSize", a[a.parallelogramTallFullSize = 110] = "parallelogramTallFullSize", 
    a[a.squiggleFullSize = 111] = "squiggleFullSize", a[a.donutFullSize = 112] = "donutFullSize", 
    a[a.tetrisZFullSize = 113] = "tetrisZFullSize", a[a.tetrisTFullSize = 114] = "tetrisTFullSize", 
    a[a.tetrisLFullSize = 115] = "tetrisLFullSize", a[a.cornerFullSize = 116] = "cornerFullSize", 
    a[a.flowerFullSize = 117] = "flowerFullSize", a[a.fanbladeFullSize = 118] = "fanbladeFullSize", 
    a[a.squishedBoxFullSize = 119] = "squishedBoxFullSize", a[a.roundedRightTriangleFullSize = 120] = "roundedRightTriangleFullSize", 
    a[a.arrowRoundedFullSize = 121] = "arrowRoundedFullSize", a[a.beadFullSize = 122] = "beadFullSize", 
    a[a.parallelogramWideFullSize = 123] = "parallelogramWideFullSize", a[a.chevronFullSize = 124] = "chevronFullSize", 
    a[a.xFullSize = 125] = "xFullSize", a[a.tetrisLineFullSize = 126] = "tetrisLineFullSize", 
    a[a.hexagonV3 = 150] = "hexagonV3", a[a.triangleV3 = 151] = "triangleV3", a[a.rectangleV3 = 152] = "rectangleV3", 
    a[a.heartV3 = 153] = "heartV3", a[a.starV3 = 154] = "starV3", a[a.archV3 = 155] = "archV3", 
    a[a.squiggleV3 = 156] = "squiggleV3", a[a.tetrisZV3 = 157] = "tetrisZV3", a[a.tetrisTV3 = 158] = "tetrisTV3", 
    a[a.tetrisLV3 = 159] = "tetrisLV3", a[a.fanbladeV3 = 160] = "fanbladeV3", a[a.arrowRoundedV3 = 161] = "arrowRoundedV3", 
    a[a.beadV3 = 162] = "beadV3", a[a.parallelogramWideV3 = 163] = "parallelogramWideV3", 
    a[a.chevronV3 = 164] = "chevronV3", a[a.HS_END_OF_FULL_SIZE_SHAPES = 165] = "HS_END_OF_FULL_SIZE_SHAPES", 
    a[a.HS_NUMBER_OF_OBJECTS = 166] = "HS_NUMBER_OF_OBJECTS", a[a.image = 2e3] = "image", 
    a[a.HS_START_OF_CHARACTERS2 = 3e3] = "HS_START_OF_CHARACTERS2", a[a.crocodileJaws = 3001] = "crocodileJaws", 
    a[a.HS_END_OF_CHARACTERS2 = 3002] = "HS_END_OF_CHARACTERS2", a[a.nil = 1e4] = "nil", 
    a[a.edgeOfScreen = 3e4] = "edgeOfScreen";
}(HSObjectType || (HSObjectType = {}));

You noticed more shapes, huh? Does that mean a new version of secret blocks? Maybeโ€ฆ


Here are the IDs for Parameters
var HSParameterType;

!function(a) {
    a[a.Default = 42] = "Default", a[a.LineWidth = 43] = "LineWidth", a[a.LineColor = 44] = "LineColor", 
    a[a.RandomLow = 45] = "RandomLow", a[a.RandomHigh = 46] = "RandomHigh", a[a.Variable = 47] = "Variable", 
    a[a.VariableValue = 48] = "VariableValue", a[a.Conditional = 49] = "Conditional", 
    a[a.HSObject = 50] = "HSObject", a[a.Sound = 51] = "Sound", a[a.Event = 52] = "Event", 
    a[a.SetText = 53] = "SetText", a[a.Object = 54] = "Object", a[a.TextOnly = 55] = "TextOnly", 
    a[a.Scene = 56] = "Scene";
}(HSParameterType || (HSParameterType = {}));

Secret blocks? You donโ€™t need these anymore. Theyโ€™re integrated into the shortcut so that if an ability is blank, these are added by default, or you can type it as {secret_blocks} in the editor.

@โฃpomtl @โฃomtl @โฃThinBuffalo @โฃPetrichor @โฃXAMANION @Good-Eโ€™s
(you should ask to join GoodEs for more cool stuff like this lol)

Any questions? Feel free to ask :slight_smile:

62 Likes

Wow that is a long first post

Usage Example (these tell you what to edit)

Basically in tables, the left side tells you the trait, and the right side holds the current values. Change the ones on the right for these tables. For text, look at the diagram. One โ€œchunkโ€ is one block.


iOS 11 users

If you are on iOS 11, this will work still. With some hardships, you can still get it.

  1. Use a different device (can be your parents) with iOS 12 on it.
  2. Download shortcuts on that device and sign in to that Apple ID on your iOS 11 device (or family share purchases).
  3. It will ask to download an older version, hit OK (or yes or confirm or whatever it says)
  4. Now you have the โ€œWorkflowโ€ App.
  5. Download the Shortcuts (called workflows) in the right order.
  6. Bam done!

Video: Secret Blocks in 66 seconds! This is how easy it is!
Secret Blocks in 66 seconds

Old Video Link

Find the video here
image
Player might be a little glitched (I canโ€™t do anything about that), so if you can, tap the Fullscreen button. If you canโ€™t, do a pinch gesture outwards.


Current Issues

Key:

+ Resolved, iโฃn next update. [1โ€ฎ[
- Source founโฃd, nโฃo fix yet. [0]
โ€ข Issue oโฃpen, unโฃknown cause [1]
๐Ÿ”— Community Fix link belowโฃ [0]
โœ”๏ธ Resolved, please update. [0]

Issues:

+ Secret Blocks anโฃd Sโฃet Image blocks are nโฃot working
โ€ข iOS13 MIDI Hack doesnโ€™t adโฃd song?

21 Likes

Dude thatโ€™s super helpful and very informative!
Good job on a tutorial very well done

9 Likes

Thank you, I hope this expands the audience for modded projects

9 Likes

Thatโ€™s cool!
(but how did I get tagged, just curious)

3 Likes

Ooh I gotta try this
Can I get secret blocks with this?

3 Likes

I tagged quite a bit of groups, very bottom of the post

8 Likes

Yes, I will also get copy-pastable code here in a moment

9 Likes

Oh ok.

2 Likes

Thatโ€™s so amazing! Iโ€™m going to do some testing now

2 Likes

Not necessarily one of those ones by default. For abilities at least, any string works. I have used stuff like โ€œcs1247โ€ before and it was changed into a regular one by Hopscotch.

6 Likes

I know, but itโ€™s good to have it in the format that is intended

6 Likes

This is so cool!

2 Likes

[quote=โ€œAwesome_E, post:1, topic:50533โ€]

@Stylishpoopemoji33 @FearlessPhoenix
@SilverStar @anon69692094
@tankt2016 @SarcasticTvHead
@William04GamerA @Rodrik834
@Hopscotcher @Temmy
@BabyButterfly @Legendary_myth
@anon23813088 @UTheDevHS
@PerilTheSkywing

@Good-Eโ€™s

<small><small><small>(you should ask to join GoodEs for more cool stuff like this lol)</small></small></small>
[/quote]

Lol found ur secret I think

5 Likes

ok? there was no secret linkโ€ฆ

Also, remember that the second shortcut is the main one

10 Likes

Lol Iโ€™m trying to mess around with a project and I understand nothing plus I crashed shortcuts twice XD

2 Likes

What are you trying to do first? I could help with thatโ€ฆ

7 Likes

Wouldnโ€™t tag pomtl here but if you think itโ€™s a good fit than ok

3 Likes

Just trying to mess around with it lol idk

Wait if I use the shortcut you wonโ€™t get any emails about who used it or anything, right?

2 Likes

pomtl has to do with projects, and this modifies json of any projects, thatโ€™s my thought on it

9 Likes