Skip to content

Carpet Mod 1.4 for Minecraft 1.17+ / 1.16.4/5 / 1.15.2

Compare
Choose a tag to compare
@gnembon gnembon released this 23 Jun 14:40
· 2373 commits to master since this release

tl;dr links:

download carpet 1.4.22 for 20w51a(1.17)

download carpet 1.4.22 for 1.16.4 and 1.16.5

Check below the changelog for other versions

What's new in carpet 1.4.22

  • confirmed support for 1.16.5 (previous 1.16.4 versions should work on 1.16.5 anyways - pretty much nothing changed). Just use 1.16.4 version for 1.16.5 pre-1
  • fix crashes when fiddling with villagers with /track overlays active (blame @magneticflux- )
  • information about game freezing with /tick freeze is now properly disseminated to connected carpet clients on SMP servers, making their experience similar to singleplayer (blame @altrisi)

scarpet changes

  • support for reading / writing json local files (blame @altrisi)
  • player based events are now correctly triggered only once for targetted player, not for all online players that did not trigger that event
  • fixed incorrect handling of upper bounds for slice(), slice() can also accept now negative indices.
  • added 'game_data_version' to system info
  • fixed behaviour of player entity variables when player respawns, and disappears and reappears.
  • player() with no args in player apps always return the player associated with that player scope instance.
  • limited the ability of calling recursively of game_tick inside game_tick - calling game_tick from the world is a bad practice anyways, but wasn't causing issues on vanilla, however that causes crashes on lithium. calling game_tick from a game_tick is a bad idea anways, but since it worked on vanilla, the bahaviour is kept with the warning on other modded setups (besides carpet).
  • added '__on_player_swings_hand(player, hand)` event

What's new in carpet 1.4.21

  • support for 20w51a
  • removed onePlayerSleeping in favour of new vanilla gamerule (1.17)
  • Flipped the default values of scriptsAutoload setting and stay_loaded in app config - both are true by default. Since the addition of singleplayer app shared storage, all world scripts (located in world/scripts folder) will now load automatically like datapacks. Also all apps by default stay loaded, so adding an app is as simple as dropping them in the /scripts folder.
  • scarpet apps in shared singleplayer space (config/carpet/scripts) can be organized in subfolders. App names still need to be unique
  • ability to change player's selected hotbar slot with /player command
  • /overlay <shape> <radius> ... <selector> can now accepts any entity selector. Shapes opacity and thiccness depends now on the number of shapes to draw per command
  • fixed behaviour of tnt with optimizedTNT to match current vanilla mechanics (blame @altrisi )
  • fake players will now respond to server idling settings and will show better death messages

scarpet changes

  • system_info can be used to query client brand and server version
  • app files in NBT format are now saved in a compressed way and read_file can read compressed nbt files as well (including saved structures)
  • added list_files to retrieve app file listings
  • run() now properly returns all command run information even if the owner of the command changes with execute
  • entity_area now accepts an entity as a starting box, defined as the bounding box of that entity
  • added absorbtion and XP api for player entities (blame @Ghoulboy78 )
  • added weather API ( blame @Ghoulboy78 )
  • added gamerule reader to system_info (blame @Ghoulboy78 ). Gamerules like carpet rules are read-only to discourage fiddling with them in scripts
  • added item_list and item_tags to support item tag system
  • entites can be selected using entity tags.
  • added server_starts and server_shuts_down events
  • apps can define their own command permission level with command_permission in config
  • added player_trades to the events (blame @BisUmTo )
  • range can now handle floating point chains, not just integers
  • formatted texts from format() can now be concatenated using + operator (blame @altrisi )
  • fixed set clearing block data in some situations. set can now accept properties as a map. Check the docs for details

What's new in carpet 1.4.20

  • support for 20w49a
  • carpet extensions using their own settings managers will now be properly synced with connected carpet clients. blame @altrisi
  • apps now can be loaded from one location in SP: ~/.minecraft/config/carpet/scripts, not just worlds scripts folders, blame @altrisi
  • you can now use a default carpet config for your worlds in ~/.minecraft/config/carpet/default_carpet.conf , blame @altrisi
  • several built-in commands now are enabled by default only for OP player, it includes spawn, tick, draw, player and track. All other commands that are only informative and should not affect the world are left enabled by default for all players
  • disabled fastRedstoneDust in the settings, since this feature had no effect for quite some time.
  • fixed /banip failing with fake players on the server

scarpet changes

  • rework on the event system. global events can now be handled by player scoped apps, and each player scoped app works independent from each other. Previously handling of the event was shared between all player instances of the same app, which is not the case anymore. Otherwise it should work as before, but please report issues with events if you find some.
  • also, on the topic, added a bunch of optimizations to reduce memory and call stack profile - please report if weird sh..t is happening due to that. Should be fine...
  • inventory_* functions can now access different inventories of the same entity via defining the access type. For instance players have default inventory, enderchest and equipment.
  • inventory API allows to access equipment inventory of all living entities
  • support for more vanilla argument types for custom commands: slot and blockpredicate
  • added tag_matches() to detect if one tag is contained in another tag
  • added support for teams via team_list, team_add, team_remove, team_leave and team_property - blame @replaceitem
  • added player_escapes_sleep event, when player cancels sleep in bed using Esc key, not the cancel button. Weird, I know, but it was needed.
  • block_state() can now accept a block string, returning it default or defined state
  • fixed handling of invalid structures with invalid boxes. These only surface when using worlds modified with worldgen datapacks
  • plop() with no arguments now returns full lists of possible features and structures to plop, including moded ones.
  • added block_list() and block_tags() to handle block tags queries
  • biome() with extra parameters now allow to query properties of biomes. With no parameters, returns a full list of available biomes in the world, including moded ones.
  • added display_title() to put the text right in your face. blame @altrisi
  • added bossbar(), blame @replaceitem

What's new in carpet 1.4.19

  • support for 20w48a
  • fixed command error when summoning invalid accounts on an online server

scarpet changes

  • increase support for various other entity inventories
  • added deprecation warnings when an app uses a feature that is deprecated. It should show one warning per feature per app
  • set will return false properly when set_block fails
  • added block_state to replace block_properties and property (now deprecated)

What's new in carpet 1.4.18

  • added xpfix for 20w46a, fixing xp orbs loosing all their value when applied to mending - MC-205918
  • overlay uses now the new command system - options are now much more neatly organized
  • added spheres and boxes to overlays. They can either be stationary or follow a player
  • carpet extensions can now handle client commands client side for their own command managers
  • fixed fake player behaviour not to attack entities if continuous attach (block mining) is requested

scarpet changes

  • support for custom app commands, as well as most vanilla command argument types. See docs for details

What's new in carpet 1.4.17

  • support for 20w46a
  • fixes some updates happening with fillUpdates false when removing certain blocks
  • various fixes around behaviours of fake players.

scarpet changes

  • fixed plop taking now any number of arguments, not strictly 4
  • support for all vanilla argument types for custom commands WIP
  • custom events and low level events API (read the docs handle_event, signal_event), allowing to create own events and services type apps

What's new in carpet 1.4.16

  • support for 20w45a
  • Fixed fake players all sorts of portal issues (1.17+). Thanks Mojang

scarpet changes

  • added amethyst_geode to plop (1.17). Ok, I didn't add it - it added itself.
  • added support for some built-in vanilla argument types in custom commands. Its experimental for now, but can be enabled by specifying 'legacy_command_type_support' in __config()

What's new in carpet 1.4.15

  • build for 1.16.4. Should work for 1.16.3 tho
  • reduce profiler overhead when running /tick entities or /profile entities
  • cactus works on all pillar blocks, including chains
  • fixed interactions of fake players in client side vehicles (boats, horses) and when pushed by slime blocks
  • fixed chainStone behaviour when 'stick_to_all' option is used.

scarpet changes

  • scarpet apps now always load with UTF-8 encoding, so you can use UTF characters directly in the app code
  • scarpet apps that use threading (tasks) will now use app specific thread pools and be shutdown properly when app unloads.
  • better rounding of float values. e.g. 7 * 0.2 now shows as 1.5, not 1.400...001
  • added the ability of apps to hook into entity loading time, saving on polling of entities every tick with selectors, via entity_load_handler, added entity_types to help resolve entity descriptors and make custom ones.
  • ability to query / modify spawn_points of players.
  • jk. Its 1.4

What's new in carpet 1.4.14

  • continue supporting 1.16.4 prereleases
  • carpet now uses standard fabric loader entrypoints (may have some side-effects when loading with other mods and carpet extensions)
  • added github actions to create development builds, update rules in the wiki automatically and moar, thanks to altrisi

scarpet changes

  • split has now default behaviour with one argument

What's new in carpet 1.4.13

  • support for 1.16.4 (should work with 1.16.3 as well)
  • added chainStone, with the ability of chains to stick to each other, and blocks that have a small but firm contact surface on its side (use 'all' to let them stick to everything)
  • added datapacks as a potential culprit to the health report

scarpet changes

  • added system_info() to fetch various pieces of information about the app environment. Check the docs for details
  • deprecated seed() since now its part of the system info
  • handling better user regular expression errors in replace and split
  • fixed server crashes with get_mob_counts()

What's new in carpet 1.4.12

  • still works with 1.16.3
  • fixed compatibility issue with OptiFabric and Optifine
  • fixed compatibility issues with mods by PhiPro
  • fixed fillLimit limit to be inclusive, not exclusive
  • ai_tracker app shows now item pickup range for players
  • README now puts available carpet extensions ecosystem front and center linking a wiki page with community contributions to carpet and scarpet

scarpet changes

  • added ... unary operator indicating a variable length argument in function signatures.
  • added support for user defined functions with variable length argument list. Use fun(foo, ... bar) -> baz for that
  • ~ used for string matching now will return grouping matching if more than one grouping is used in a regular expression
  • errors in regex syntax are now reported as proper coding errors with stacktraces and the whole shebang
  • fixed handling of some null objects, specifically in set_poi, breaking_progress and put for lists. If you had troubles working with these endpoints, you may not have now.
  • added player_collides_with_entity event - albeit its not the actual collision, only when player is in an effect range of an entity (slightly larger box), so the name may still change
  • added player_picks_up_item event to signal of player ingesting items.
  • improved drastically docs for events.
  • added task_thread to allow threads to run on a custom thread executor. Removed that ability from task. This allows for schedule functions with variable argument list
  • fixed issue with run function not executing without player context present
  • updated item_category to return null for items without a category
  • cleaned up parsing of nbt stings with nbt function. The string version of the returned value now correctly represents what was the actual result of the parsing.
  • entity_area now accepts tuple and block arguments.

What's new in carpet 1.4.11

  • continued support for 1.16.3 ;p
  • flippinCactus now works back on all rail types
  • fixed issues with ocelot spawning causing NPEs when spawn tracking is enabled
  • carpet extensions can now easily define their own scarpet built-in functions, operators and custom events
  • added portal links renderer to overlay app. Video explanation coming soon
  • consistent response from the '/carpet' settings command regardless who issued the command
  • fixed inconsistency with vanilla and optimizedTNT when tnt minecart explodes on a rail block.

scarpet changes

  • apps that have custom commands will not output anything as result if a method returns null not '' (empty string)
  • unhandled throw() now reports correctly as an error
  • run() now intercepts and returns command console output and last error message for further parsing
  • (fix) function defined directly with /script run will not report themelves as faux errors.

What's new in carpet 1.4.10

  • supports 1.16.3
  • fixed compatibility issues with immersive portals
  • fixed particles rendering when running optifine
  • fixed ai_tracker app to work across dimensions. Added healthand portal_cooldown to ai_tracker.
  • added cleanLogs to remove unwanted log spam messages
  • fixed profiler classification of several events
  • fixed some updates happening with fillUpdates=false
  • removed unloadedEntityFix as its no longer reproducable and causes issues
  • fixed a timing issue when using /tick freeze.

scarpet changes

  • scarpet now handles large nubmers (e.g. seeds) that are longs, but not fit in doubles properly. Scarpet sill does double arithmetic, but long constants remain precise assuming no math happens to them.
  • /script run and invoke return the numerical value of the result if possible
  • reloading / unloading an app will clear its scheduled calls
  • logger now supports custom log levels
  • added 'air' (read/write) to entity API
  • apps that serve commands need to return null to output nothing, not an empty string.
  • poi() can now query pois in square chunk column
  • added 'exact' coords option to entity trace API
  • fixed rendering of scarpet shapes with fabulous graphics

What's new in carpet 1.4.9

  • added ai_tracker app
  • made apps properly reload when loaded while already being loaded

What's new in carpet 1.4.8

  • supports 1.16.2
  • (likely) a last 1.15.x release
  • updated Chinese translations

What's new in carpet 1.4.7

  • support for 1.16.2-pre3 and 1.16.2-rc1

scarpet changes

  • fixed client crash in 1.16.2 when updating client chunks via set_biome and reload_chunk

What's new in carpet 1.4.6

  • support for 1.16.2-pre2
  • added 'ops' option to suggestions for most command carpet settings

What's new in carpet 1.4.5

  • support for 1.16.2-pre1

scarpet changes

  • function names are now case sensitive, so sin() is different than Sin(). This fixes imports of UC functions from other modules and libraries
  • added 'on_ground' query to entity API
  • proper error reporting when operators are missing between new-style list and map constructors.
  • tweaked line particle display and chunk_display app so it renders better on vanilla clients. Still better to view them on carpet clients
  • moved scarpet shapes rendering to the end of the tick - should now render little better over liquids.

What's new in carpet 1.4.4

  • updated traditional and simplified chinese translations
  • fixed compatibility issues with reach entity attributes
  • fixed compatibility issues with optifine. Backported to 1.4.0 for 1.16.1 as ....build2
  • /perimeterinfo will now spawn test entities below Y0 to prevent from colliding with players

scarpet changes

  • changed and expanded available entity descriptors for entity_list and entity_area, Now they support all entity types and categorizations. Previous descriptors that were not consistent, like 'players' or 'items' are removed.
  • improved precision of entity targetting with entity_area.
  • added label to supported shapes as floating text
  • allow for discrete snapping of client shapes, using 'dxdydz' as opposite to 'xyz'
  • type of 'task' is reported properly
  • expanded entity API with 'path', 'brain', 'active_block', and 'breaking_progress' functions
  • solved hash collisions for shapes caused by vanilla vec3d(-8,8,-8) == vec3d(8,8,8)
  • added '__on_player_swaps_hands` event handles
  • fixed issue where command-defined events were preventing apps events from registering

What's new in carpet 1.4.3

  • supports 20w29a
  • restored golem counter in villager tracking due to 28a changes

scarpet changes

  • attached entity events (via entity_event) will execute with the context (dimension, position, etc) of the entity
  • events of taking damage, block breaking, and using item are called a bit earlier - before they have an effect in vanilla
  • fixed nbt values reporting their initial value despite being modified
  • events of updating hotbar slot and craft request will trigger only once

What's new in carpet 1.4.2

  • supports 20w28a
  • adjusted names of structures in built-in overlay app to adjust to 1.16.2 changes
  • allowed carpet extensions to add their own built-in apps
  • add listener for HUD logging allowing extensions to contribute their own HUD loggers
  • added /player X look at subcommand
  • removed portalSuffocationFix from 1.16 version, as its fixed in 20w28a
  • added piglinsSpawningInBastions for 1.16 allowing Piglins, Piglin Brutes, and Hoglins respawn in bastion remnants.

scarpet changes

  • addition on maps treats them like sets and produces merged maps. Lists operations are still propritizing vector approach, not lists approach.
  • new structure and plop (world gen) API for 1.16.2 (incoming) support for features and structures in json. Your previous names used with structure API and especially plop will not work but going forwards, names will be compatible with Mojang datapack specs.
  • documented how to setup scarpet markers as armorstand type markers

What's new in carpet 1.4.1

  • added renewableBlackstone forming when lava flows next to blue ice WITHOUT soul soil below it.

scarpet changes in 1.4.1

  • Officially supported new map and list constructor syntax. You have 1.4.0 and are missing {} and [] - don't worry - it works in 1.4 as well, it is just not documented. Previous functional notation (using m() and l() ) is fully supported and the 'proper' way to do it.
  • -> operator in map constructor context now returns a tuple of its arguments. To construct a set of functions, you would have to add them one by one now, as -> will be creating pairs, not defining functions

Previously:

__config() -> m( l('stay_loaded', true) );
global_precious_blocks = l('dirt', 'stone');

Now, this would also work:

__config() -> { 'stay_loaded' -> true };
global_precious_blocks = ['dirt', 'stone'];
  • fixed lighting issues when resetting chunks with reset_chunk. Now it all resets properly. Thanks to PhiPro
  • added persistence (query and modify) to the entity API
  • without_updates and in_dimension should now be thread safe

What's new in Carpet 1.4

  • support for 1.16.0, and 1.16.1 . 1.15.2 will keep being supported until final stable 1.16.x version is released.
  • 1.4.0 build2 fixes compatibility issues with optifine
  • added, or ported from 1.12 following rules
    • extremeBehaviours
    • forceloadLimit
    • interactionUpdates
    • portalSurvivalDelay
    • portalCreativeDelay
    • commandScriptACE
    • spawnChunksSize
    • fogOff
    • creativeNoClip
    • creativeFlySpeed
    • creativeFlyDrag
  • removed following rules
    • kelpGenerationGrowthLimit - fixed in vanilla
    • horseWanderingFix - fixed in vanilla
    • miningGhostBlocksFix - (seems to be) fixed in vanilla
    • portalCaching - fixed in vanilla
    • leadFix - fixed in vanilla
    • missingTools - now only affect glass mining, other (pistons and sponges) added to vanilla
    • commandCameraMode - added to vanilla via F3F4 and F3N shortcuts. For enabling spectator accounts on servers check cam.sc app in the scarpet app store.
  • full synchronization with clients and syncing with carpet clients of the client facing features. This means that having carpet
    installed on your client will get you a better experience on carpet servers. Having carpet client is still not required.
  • added ops permission level for command settings, as well as 1-4 if you want to be precise.
  • /profile command as a low perm alias for /tick health commands.
  • added built-in scarpet apps to be loaded via /script load xxx
    • stat_test to monitor statistics tracked by scarpet
    • overlay app to see in-game features and clues
    • chunk_display to monitor loaded chunks
  • moved and maintained scarpet docs as part of the carpet repo
  • apps now run with the permissions of the loader. Running scripts vs using them has two sets of permissions to control it.
  • apps will reload when /reload command is used.
  • fixed compatibity isseues with various mods, tweakeroo, g4mespeed, optifine, lithium etc.
  • added more player controls: drop, dropStack, move - to stop
  • added explosions logger
  • support for translations. Added zh_cn and zh_tw
  • new shapes to /draw command
  • enabled some client side commands when connecting to non-carpet servers, like creativeFlySpeed, fogOff or smoothClientAnimations to fix pistons blinking
  • licensing under MIT licence
  • Lots of bugfixes...

Scarpet language 1.7

  • support for threaded execution via task, task_value, task_join, task_count, task_completed, synchronize and task_dock.
  • added import support - allows to modularize your apps and use libraries (extension .scl)
  • structure API to query and modify game structures via structures, structure_set, structure_eligibility
  • POI API to access and make changes to the POI system via poi and set_poi
  • global system variables for better interapperability via system_variable_get and system_variable_set
  • noise generation via perlin and simplex
  • scoreboard API via scoreboard, scoreboard_add, scoreboard_remove, scoreboard_display
  • client facing shapes drawing via draw_shape
  • ability for scripts to read, load and write to files of with NBT and plain text. Better organization of scripts files
  • API for handling stats via statistics and event __on_statistic
  • added game event handlers
    • __on_player_interacts_with_block
    • __on_player_places_block
    • __on_chunk_generated
    • __on_lightning
    • __on_player_takes_damage
    • __on_player_deals_damage
    • __on_player_dies
    • __on_player_respawns
    • __on_player_connects
    • __on_player_disconects
    • __on_player_chooses_recipe
    • __on_player_switches_slot
  • added __on_close
  • events with global scope (like __on_tick) can only be triggered for apps with global scope.
  • expanded entity api: permission_level, effect, breeding_age, pose, display_name, command_name, team, gamemode, jumping, jump, silent, gravity, fire, hunger, saturation, exhaustion, add_exhaustion, nbt, nbt_merge
  • added stack traces to error messages
  • player enderchest access
  • support for '\n' and '\t' characters in strings
  • added seed, in_slime_chunk, reset_chunk, without_updates, c_for, is_chunk_generated, world_time, day_time, inhabited_time, last_tick_times, spawn_potential, portal_cooldown, portal_timer, add_chunk_ticket, reload_chunk, view_distance, mob_counts, unix_time, convert_date, parse_nbt, encode_nbt, recipe_data
  • better support for break and continue in functions like scan and volume
  • added support for all new nether blocks, materials, sounds, etc
  • set_biome is now y value sensitive. Use 0 in the end and overworld, and actual Y value for the nether
  • lots of bugfixes...