Skip to content

Carpet Mod 1.3 for Minecraft 1.16 snapshots and 1.15.2

Compare
Choose a tag to compare
@gnembon gnembon released this 11 Dec 06:08
· 3084 commits to master since this release

tl;dr links:

download carpet 1.3.33 for 1.16 (1.16-rc1)

download carpet 1.3.33 for 1.15.2

To mark release of Minecraft 1.15, carpet now graduates to frozen state - don't worry, its just a name. For older versions, scroll to the bottom of the page.

What's new in 1.3.33

(Tentative version of Carpet 1.4 for Minecraft 1.16)

  • supports 1.16-rc1
  • upon the unanimous agreement of all contributors, carpet has been licensed under MIT licence
  • tweaks to rendering of /overlay app overlays
  • fixed crash when accessing custom 1.16 dimensions.
  • temoved the assumption that there are only 3 dimensions for applicable features (1.16)
  • auto-loading of apps happens now when worlds are loaded, meaning scripts can access worlds when auto-loading
  • reorganized when carpet is loading - means extensions need to adjust their loading as well. Fixes compatibility with some mods doing hacky things with fabric framework (1.16)

scarpet changes

  • allowed for much smaller transparencies for scarpet client-facing shapes
  • allowed for /\-+_/ characters in file names for app accessed files
  • improved performance in handling ops in NBT tags
  • added more options to handle block properties and block data support for set
  • added parse_nbt and encode_nbt as ways to convert scarpet values from and to nbt tags
  • added 'nbt' and 'nbt_merge' to entity modify API

What's new in 1.3.32

  • supports 1.16-pre8 and 1.16-rc1
  • fixed issues with game response and chunk loading when tick warping

scarpet changes

  • added 'unix_time()andconvert_date()` for date / time manipulations
  • added support for block position arguments and triples for scan, volume, rect and diamond

What's new in 1.3.31

  • supports 1.16-pre7

scarpet changes

  • fix elevated permission requirements for fetching entity lists with descriptors.

What's new in 1.3.30

  • supports 1.16-pre6

scarpet changes

  • added hooks for __on_player_chooses_recipe and __on_player_switches_slot events
  • added recipe_data() and crafting_remaining_item() - for convenient and easy crafting scripts
  • added optional player argument to print. when called print(player, msg) it will only display this message to that player.
  • fixed seed loosing precision as long > double. Seed now returns a string.

What's new in 1.3.29

Mojang (pron. Modgang Studios ) just keeps on giving this week, right?

  • supports 1.16-pre4 and 1.16-pre5
  • added explosion logger - provides information about the final results of all explosions (X-green)
  • fixes issues with /spawn tracking and /log|spawn mobcaps not reporting properly. (1.16)

What's new in 1.3.28 ..b

  • fixed crash for servers on 1.16-pre3

What's new in 1.3.28

  • supports 1.16-pre3
  • fix client crash with antiCheatDisabled enabled
  • added synchronisation vs. smoothness as preferences for path tracking in /camera app
  • first appearance of chunk_display as a built-in app using scarpet client rendering features. WIP
  • changed order of things when starting up, so extensions commands will always be loaded
  • since /reload command now reloads commands and datapacks, it will also reload scarpet apps (1.16)
  • grinstones are now movable with movableBEs like in bedrock edition

scarpet changes

  • added 'cylinder' shape to scarpet shapes
  • ability of sending shapes via draw_shape in bulk to minimize network packets
  • duration of shapes can be set to 0 - this turns them off immediately
  • added ability for shapes to snap to various combinations of coordinates, not only to all of them
  • switched to 64bit FNV-1a algorithm for keying of shapes to minimize collisions
  • optimized rendering of shapes that do not render all faces/lines
  • shapes that 'follow' entities now move smoothly with high framerates, not just 20/s
  • inventories for players can be specified as strings (player names) as well as 'enderchest_' to denote their enderchest content
  • added hunger, saturation, exhaustion and add_exhaustion to (player) entity API
  • added read_file, delete_file, and write_file as preferred functions to access external files. use of load_app_data and store_app_data on external files is now deprecated (still supported) and its use is limited to the system managed app tag.
  • added the ability to handle textual files, apart from nbt files.
  • added mob_counts() (1.16 +) to query mob cap information in scripts

What's new in 1.3.27

  • supports 1.16-pre2
  • fixed startup crash for servers from 1.16-pre1
  • optimized server-client communications for custom scarpet shapes

What's new in 1.3.26

  • supports 1.16-pre1
  • On dedicated servers, carpet settings and server tick rate is now synchronised with clients that run carpet as well allowing for full carpet experience, like you were running a singleplayer game.
  • added zh_tw translations and fixed bug caused in loading translations
  • updated built-in overlay app to use the new client integration improving greatly the visuals
  • fixed commands disappearing after /reload due to 20w22a changes

scarpet changes

  • added __on_player_connects and __on_player_disconnects events
  • added view_distance() as reported by the game
  • events now cannot be registered and handled in libraries and imports. each app has to define its callbacks directly in the app main file to handle those.
  • added draw_shape allowing rendering of custom shapes to clients. Vanilla clients connected to carpet servers will receive replacement rendering based on dust particles. Drawn shapes can be static, or follow entities.

Example usage: render a personal sphere around villagers:

/script run 
for(entity_selector('@e[type=villager]'),
  draw_shape('sphere', 1000, 
    'center', l(0,2,0),
    'radius', 3,
    'follow', _,
    'fill', 0x22dd2244,
    'color', 0x22882244,
    'width', 5
  )
)

What's new in 1.3.25

for 1.16 (20w22a+) /s and /c commands for switching gamemodes are removed in favour of using now buit-in gamemode switcher (F3F4) and the fact that F3+N will switch you reliably from spectator to any gamemode you had before, so what \c \s was doing.

If you were using gamemode switching as a server feature where users were not required to have OP permissions do do so. you can now use cam.sc app available through the scarpet repo, that provides with the same as /c /s did with the following benefits:

  • you can easily change the command name by changing the app file name
  • saves player's position, motion, angles, effects when switching to camera mode and restores them on landing
  • saves player configs between saves, so even if server restarts you still should be transported back to where you need to be
  • If player landing position is not available (not stored) places spectating players in a safe place finding a proper space to land
  • adds timeout for the player so they cannot switch instantly, and this can be disabled in the app
  • adds extra checks, like player not falling, not on fire, etc. which also can be disabled in the app if need be.

So for server management reasons, its a much better solution as a /c /s toggles. For testing purposes in your testing worlds, you really should get acquainted with F3F4 and new F3N toggles

Other changes:

  • supports 20w22a
  • enabled translation support for extensions. Should add templates on how to do it to carpet-extra this week
  • fixed timings with fake players breaking blocks in survival - should now match actual survival players
  • fixed client side crash when changing client features that are not provided with proper values, like 'fals'

scarpet changes

  • cleaner log when placing structures and features

What's new in 1.3.24

  • supports 20w21a
  • Added support for translation and added support for Chinese (thanks X-Green). If you want to add support for your language, check src/main/resources/assets/carpet/lang/en_us.json for an example on required strings to fully support your language. Translations now affect only /carpet command but more strings will be added in the future.
  • added cylinders and cubes to /draw command (Ghoulboy78)

scarpet changes

  • added reload_chunk to resend chunk data to the clients, and added option to set_biome not to update chunk data with the clients
  • added add_chunk_ticket to temporarily load remote chunks. Only natural chunk tickets are supported at the moment
  • results of poi come out sorted by center distance as of now.
  • added portal_cooldown and portal_timer to entity API query and modify
  • better handling of errors in docked section of threaded tasks to merge stack traces all the way to the top of the thread
  • renamed 'vine' material to 'vegetation' and 'redstone_bits' to 'decoration'

What's new in 1.3.23

  • supports 20w20b
  • added client facing creativeFlySpeed and creativeFlyDrag. These settings are purely client side so it would work also on vanilla servers. Drag will impact the max speed, so you need to adjust your speed to match your drag settings. With drag set to 0.0, use speed of 11 to match vanilla top speed the closest.
  • added option /spawn entities <category> all to list all mobs from a specific category, even those that don't count towards the mobcap, and fixed /spawn entities to properly identify mobcappable entities
  • removed workstation tracking from /track villager iron_golem_spawning (1.16)

scarpet changes

  • arguments for schedule and task will be evaluated at the time of call, so things like loop(10, task( _(outer(_))->print(_))) now pass arguments as you would expect them to do.
  • added task_dock to allow tasks to run a block of code in a server-synchronized fashion
  • fixed multiple typos in scarpet docs (thanks to James103)
  • fixed double evaluation in spawn function

What's new in 1.3.22

  • support for 20w19a
  • added creativeNoClip to allow creative players that fly to clip through blocks, place blocks inside themselves, and be ignored by pistons.
  • added fogOff - another client command

Note on client commands: While carpet client is still in the plans, we will be adding some client quality of life improvements settings to carpet. fogOff and creativeNoClip are yet another mostly client facing features, so not only would work (to some extend) on vanilla servers, but you also need to enable it on your client when connecting to the carpet server. If you are on the SP - you don't need to be concerned about it.

scarpet changes

  • place_item can now handle non-block items, like bonemeal, flint and steel, or axes
  • added spawn_potential
  • added structure_eligibility that works like structures, but return structure information based on seed, not the structures actually placed in the world
  • fixed multiline strings in apps causing error lines in error reports and stack traces to be offset.

What's new in 1.3.21

  • support for 20w18a
  • due to significant changes to the redstone wire, fastRedstoneDust is temporarily disabled (for 1.16) until this feature gets rewritten for the new redstone code.
  • coloured back carpet CLI UIs for 1.16
  • rotatorBlock will now rotate hoppers
  • new shapes in /draw command: balls, cones, pyramids, diamond. Use tab completion to get tooltip about available settings for these shapes, thanks @Ghoulboy78
  • fixed and tweaked player movement detection for /tick superHot
  • reset tick speed changes when switching between worlds in SP

scarpet changes

  • added format() function to allow for text formatting, including custom RBG colors for 1.16
  • scoreboard_remove(objective, player) will now remove score for a given key
  • added modifiers for entity API modify: gamemode, jumping, jump, silent, gravity, fire. Blame @Ghoulboy78 for that

What's new in 1.3.20

  • 20w17a
  • fixed compatibility issues with Tweakeroo
  • added bastion_remnant to /overlay script

scarpet changes

  • workaround to fix vanilla bug when a dead player accesses crafting table using /script run __on_statistic(p, a, b, c) -> modify(p, 'health', 0)
  • scan can take position style arguments or coordinate triples, instead of only flat coord triples
  • added display_name, command_name and team to entity query API
  • changed so that name and str(e) for entities return their plain name (no teams included).

What's new in 1.3.19b

  • added variants for bastions in plop: 'bastion_remnant_1' through.._4'

What's new in 1.3.19

  • supports 20w16a
  • removed disableSpawnChunks
  • added spawnChunksSize for custom spawn chunks size. The game will still load default area when starting, otherwise this causes problems, but will change to custom size if its specified in carpet.conf. Use spawnChunksSize 0 to disable them entirely.
  • added /tick freeze deep for a new deeper freeze option. Currently under deep freeze chunks timouts won't be advanced (like portal tickets), but this would prevent regular chunks from unloading until the game is frozen
  • tnt logger now outputs extra explosion tick time information as well as tnt sequence number for that tick (X-Green).
  • One can only shadow other players while having OP priviledges. Non-op players can still shadow themselves, just not other players.

scarpet changes

  • added new structures you can plop anywhere: 'bastion_remnant' and 'ruined_portal' (1.16 only)
  • changed how apps store their custom nbt files. This will break access for existing apps to their data. Previously, if the app name as scripts/foo.sc, all custom nbt files, lets say 'bar', will be stored as scripts/foo.data.bar.nbt. Now they are stored in a folder as scripts/foo.data/bar.nbt. Rename and move your important app data files to continue for the apps to function.
  • apps can store data in the shared space as well. Use store_app_data(tag, path, true), to store the tag in the shared space. Use load_app_data(path, true) to load from shared space. Shared data folder is located at scripts/shared folder.
  • default app (via /script run), can now store data, but only in the shared space.
  • external file descriptors can now contain '/' - this will use subfolders to organize the files on the disk.
  • added world_time, day_time, inhabited_time and last_tick_times
  • added optional mixer for sound. By default now all sounds are mixed into MASTER rather than PLAYER mixer.
  • fixed += behaviour for container lvalues. Should now be able to add to container' containers like ll = l(l()); ll:0 += 5 => [[5]]
  • added 4 new player tracked events: __on_player_takes_damage, __on_player_deals_damage, __on_player_dies, and __on_player_respawns

What's new in 1.3.18

  • support for 20w15a
  • results for counters come out sorted by amounts in descending order rather than random

What's new in 1.3.17

  • support for 20w14a and 20w14infinite. albeit there is several unimportant feature disabled for 14inf since it woudn't work otherwise
  • disable running perimeter check with non-mobs
  • fixed too long fake player names causing issues with scoreboards
  • enabled client side commands. Previously /carpet smoothClientAnimations would only work on SP, now it works on servers, but also when connecting to vanilla servers, Works only on current player and each player that wants to reap benefits of smooth piston animations need to type it when connecting to servers. This will be streamlined at some point when carpet-client is ready.

scarpet changes

  • added 'ping' to query player ping via scarpet API
  • added is_chunk_generated to assess if chunk data is present on disk
  • added on_lightning to track natural lightning events
  • 'reset_chunk' now returns completion report, rather than printing it to chat. Lighting is still not properly reset when chunks are reset. WIP I guess.

What's new in 1.3.16

  • support for 20w13a
  • fixed and further optimised and evaluated lagFreeSpawning
  • fixed extra drop duplication with movable block entities and explosions, thanks methodz and skyrising

scarpet changes

  • added c_for to mimic ANSI C-style for(init, condition, increment) {body} style for loops
  • added `pose' to entity query API
  • break and continue are now handled in API block loops: scan and volume
  • added scoreboard API: check docs for details
  • made numerous of useful functions for internal Expression and CarpetExpression public. Useful only for those that write extensions of carpet in their own mods.

What's new in 1.3.15

  • 20w12a
  • optimized particles with carpet optimized explosions
  • removed ability to affect mining speed with shears. Vanilla has it now with hoes (1.16 only)

scarpet changes

  • moved all documentation to fabric-carpet repo including language spec, and editor resources. It will be much easier to keep them up to date when they sit on one place with the ever expanding scarpet API
  • added IDEA custom language syntax keyword lists
  • fixed on_damaged and on_death custom entity events
  • run() function now runs with permissions specified with commandScriptACE ensuring non-op players can interact with apps loaded with OP priviledges (similar to /trigger for datapacks)
  • added twisting_vines as option for plop

What's new in 1.3.14

  • 20w11a
  • added flexible boolean value for commandScript and added commandScriptACE (arbitrary code execution) to allow to differentiate between permissions to run arbitrary scarpet code and load apps vs. using them
  • fixed /spawn list results for certain mobs, specifically zombie pigman
  • removed extra particles from optimized explosions that were already removed in vanilla explosions
  • other mods will now be able to affect redstone dust calculations if they want to.

What's new in 1.3.13

  • 20w10a
  • Fixed compatibility issues with Optifine and Lithium (chunk gen detection in scarpet won't work with optifine)
  • optimised background thread task execution

scarpet changes

  • 'reset_chunk` can now accepts an rectangular area of chunks to reset at once, or an arbitrary list of chunks to reset at once

What's new in 1.3.12

  • support for 20w09a
  • enabled secondary use action (in case attack succeeds) for fake players
  • fixed loggers not refreshing when switching between worlds, and added ability to extend built-in loggers
  • updated README by technoabyss

scarpet changesoptimized

  • renamed plop features crimson_fungi and warped_fungi to crimson_fungus and warped_fungus as per 20w09a
  • events with global scope, like __on_tick(), or __on_chunk_generated(x,z) can only be triggered for apps with global (so not player) scope
  • added reset_chunk to reset given chunk to the current state of world gen
  • /script event now properly reports event changes
  • added __on_chunk_generated to track freshly generated chunks
  • fixed issues with Germaine, and other exotic locales, to parse particles, numbers, etc properly
  • set and plop will now NOT follow carpet's no fill updates rule, but added without_updates(expr) that suppresses block updates for the expression it embraces.

What's new in 1.3.11

  • support for 20w08a

What's new in 1.3.10 (while gnembon is away, here is a build by DeadlyMC)

  • attempted to fix compatibility issues with other mods like trinklets
  • fixed stackable shulkerboxes when a renamed empty shulkerbox attempts to merge with a unlabelled full one with the same color
  • added extra options to /player drop and dropStack command
  • added portalSurvivalDelay and reworked portalCreativeDelay to specify a custom delay instead
  • fix when elder guardian is struck by lighting
  • added /profile command as alias for /tick health and /tick entities

scarpet changes

  • reworked destroy to accept optional tool and nbt, returning effective tool NBT back
  • set_biome for 1.16 is now y-value specific. Setting a biome in a block sets it typically in a 4x4x4 area (subject to randomness)

What's new in 1.3.9

  • not much

scarpet changes in 1.3.9 (towards 1.7)

  • added support for new Nether_Fossil structure, fixed overlay app complaining about lack thereof
  • added new block sounds: fungi_stem, nylium, fungi, roots, shroomlight, weeping_vines, soul_sand, soul_soil, basalt, wart, netherrack, nether_bricks, nether_sprouts, nether_ore, bone, netherite, ancient_debris
  • added new material: nether_wood
  • added new features to plop: crimson_fungi, warped_fungi, nether_forest_vegetation, weeping_vines, basalt_pillar, nether_fossil.

What's new in 1.3.8

  • support for 1.16 snapshots, namely 20w06a
  • dropped support for 1.14.4
  • added /carpet interactionUpdates to prevent block updates with player actions
  • support for displaying multiple counters in the HUD, list them comma-separated to display multiple of them.

scarpet changes in 1.3.8 (towards 1.7)

  • much improved error handling
  • added forgotten fortress preventing overlay app to work in the nether
  • fix a few responses with material()

What's new in 1.3.6

  • fixed the issue with hardcoded TNT angle to be fixed to 0deg rather than kept random like in vanilla.

scarpet changes (towards 1.7)

  • improved error and stack trace reporting
  • fixed /script globals for unused imports
  • fixed inconsistencies with structure generation: renamed witchhut to witch_hut and oceanruin* to ocean_ruin*; set_structure and plop use consistent names for structures.
  • added in_slime_chunk(block), seed(), perlin(...) and simplex(...) for noise generation
  • started built-in math library
  • added built-in overlay app
  • added extra option for rand to use custom seed
  • added ability for entity~'trace' to raytrace entities, but not blocks
  • adding to maps will act like adding elements to a set, or map entries with null values

What's new in 1.3.6

  • support for 1.15.2, last (famous last words) 1.15 version
  • this is also tentatively last supported 1.14.4 version of the carpet mod. If there are some critical bugfixes needed for 1.14.4, there might be bugfix releases, but no promises

scarpet changes (towards 1.7)

  • added POI API via poi, and set_poi functions
  • consolidation of structure API and consolidation with plop function. Now returns consistently the same feature-based names. Structure API consist of structures to get into about chunk structures, structure_references to get reference information, and set_structure that can be used to create or remove structure without changing blocks in the world. Can definitely be used as a fix tool to fix world structure upgrade messups.
  • fixes for the camera app where it would save player positions in saved paths incorrectly

What's new in 1.3.5

  • support for 1.15.2-pre1 (should work with 1.15.1 as well)

scarpet changes

  • added synchronize(...) to run synchronized code for multithreaded apps
  • added structures(..) and structure_references(...) to access structure information
  • added system key-value storage via system_variable_get and system_variable_set to allow interapperability

What's new in 1.3.4

  • bugfixes
  • fake player improvements: more customizable mounting, and added ability to stop movement via /player X move
  • customizable forceload limit via /carpet forceloadLimit setting
  • improved compatibility with other mods

scarpet changes (towards 1.7)

  • added stacktraces with error reports
  • added import(module_name, symbols..) to allow to modularize your scarpet apps
  • added support for scarpet libraries (.scl files) which act like apps, but cannot be loaded by themselves, only imported
  • added 'breeding_age' accessor and modifier to entity API
  • added enderchest support via inventory_xxx('enderchest',p,....)
  • allows for newlines in strings, tabs and carriage returns are still in question.
  • fixed function types and pretty string appearance

What's new in 1.3.3

  • fixed compatibility with g4mespeed mod by g4me4u that enhances the look of piston looks.
  • fixed compatibility with mods that require changes to player reach. With these antiCheatDisabled may not work properly
  • fixed pistons disappearing using smoothClientAnimations (SP client fix)
  • fixed vanillla bug that sets shulkerbox item count to 1 when undying boxes with cauldurons
  • fixed player action resetting when clicking on a block.

scarpet changes (towards 1.7)

  • added import(module_name) to allow to organize your code in modules and share them between apps. Functionality of import will change in the future - this is just a beta implementation. Currently it loads entire module specified as its argument. It will be selective in the future - you would only import those functions and variables that you need to use.
  • better error reporting, and added scarpet stack traces to code errors.

What's new in 1.3.2

  • fixed fillUpdates block entity duplication bug, portalCaching (1.14.4) ticket issues, and fastRedstoneDust redstone duplication bugs, thanks Harveykang for reporting

scarpet changes (towards 1.7)

  • scarpet got threading support.
  • added task(function, args, executor?), task_value(task), task_join(task), task_count(executor?), task_completed(task) as scarpet threading api. Use task like call for asynchronous execution.
  • reworked scarpet API calls to be thread safe.
  • revamped built-in camera app to support multiplayer, using scarpet threading technology.
  • || and && operators can now be used in place of convoluted if() statements.
  • reduce now supports _i iteration variable, like the rest of the high order functions.
  • optimized particle packets while using particle_line(...) and particle_rect(...) functions
  • added support for statistics API with statistic(player, category, stat) and new event __on_statistic(player, category, stat, value)
  • added stats_test to built-in apps
  • fixed player positioning issues with entity API (for 1.15)
  • fixed NPE issues with material(block)
  • added 2 new event handlers: __on_player_interacts_with_block(player, hand, block, face, hitvec) and __on_player_places_block(player, item_tuple, hand, block) to happen right after / during these actions. Still __on_player_right_clicks_block(player, item_tuple, hand, block, face, hitvec) is triggered before either of these happen.
  • expanded entity API with permission_level accessor and effect modifier
  • added extra option for markers with create_marker() to make them not-interactable
  • fixed store_app_data() for custom files
  • allowed built-in apps to store and load files in /scripts world folder
  • added __on_close() handler to run when application unloads / server stops / server crashes (not guaranteed).
  • apps that have commands that return empty result will not output empty lines to chat
  • removed floder.

What's new in 1.3.1

  • expanded the scope of extremeBehaviours to all mechanics that use Gaussian sampling, making a good benchmark to stress test contraptions and mechanics.
  • provided versions for 1.14.4, 1.15.0 and 1.15.1

scarpet changes

  • fixed entity positioning in 1.15
  • fixed undef with variables
  • scarpet camera (load with /script load camera) now works properly in 1.15

What's new in 1.3

  • added back tnt rule category along with new tnt settings: optimizedTNT, tntRandomRange, hardcodeTNTangle, mergeTNT
  • added extremeBehaviours to have better benchmarks for tests.
  • extended boolean configurations for command permissions, true (for everyone), false (disabled), ops (for operators), or a custom permission level
  • fixed compatibility issues of ctrlQCraftingFix and autoCraftingTable thanks to Xcom and Deadly.
  • cleaned up features that are fixed / added to 1.15: portalCaching, miningGhostBlocksFix (kept long-distance mining prevention fix as part of antiCheatDisabled), horseWanderingFix, leadFix and kelpGenerationGrowthLimit
  • added carpet logo
  • removed carpet branding from clients
  • fixed issues with some extension mods not being able to register their commands via being a carpet extension.
  • tons of bugfixes.

Scarpet version 1.6

  • scarpet programs loaded via world scripts folders are now referred to as scarpet apps.
  • functions are now proper function values, and are closures thanks to the redefined outer call, so they can hold state. Good alternative to global values.
  • added anonymous functions via _(args) -> body
  • scripts now ignore redundant and unnecessary extra semicolons - feel free to spam them at the end of expressions, even if not needed.
  • added call to call functions directly (by name or lambda reference)
  • added copy for deep copy of nested values. With that - all values are now passed by reference in function arguments
  • added loaded_status(), generation_status() and chunk_tickets() to debug loading issues using scarpet.
  • calling block() directly on a block value, like in scan() will cause to resolve it. Otherwise block values are lazy until they are needed.
  • apps can now bind to the events on the fly, no need to have callbacks defined only on the first code pass
  • entity events are now separated between apps. There can be multiple apps running the same entity at the same time, not knowing about each other.
  • loops and higher order functions now will not accept the exit block, since continue() and break() functions were introduced to use in loops and higher order functions.
  • restored plop function for 1.15
  • scarpet markers are cleaned automatically if an app is not loaded.
  • added replace(str, regex, repl), replace_first(str, regex, repl), escape_nbt
  • added new entity options, ai and no_clip