# Changelog

### 4/29/25 - Season 13 Fixes

* Changed [AbilityService](https://docs.easy.gg/scripting/bedwars-scripting/services/abilityservice) to require specification of an [AbilityInputType](https://docs.easy.gg/scripting/bedwars-scripting/types/abilityinputtype), rather than a KeyCode, to reflect changes to our Ability API and the change to the default mobile input layout to use the customizable layout
  * This change allows you to create abilities that already work for users of all devices, without the risk of overriding the input for an existing ability for that user

<details>

<summary>5/13/24 - API Improvements</summary>

* Added "velocity" property to the [ProjectileLaunched](https://docs.easy.gg/scripting/bedwars-scripting/events/projectilelaunched) event
* Added the [BeforeProjectileLaunched](https://docs.easy.gg/scripting/bedwars-scripting/events/beforeprojectilelaunched) event
* Changed properties on the [Telepearled](https://docs.easy.gg/scripting/bedwars-scripting/events/telepearled) event that were causing issues in Lua execution
  * "start" -> "startPos"
  * "end" -> "endPos"

</details>

<details>

<summary>4/5/24 - Season 10 Changes</summary>

* Added [TeamUpgradeEraPurchased](https://docs.easy.gg/scripting/bedwars-scripting/events/teamupgradeerapurchased) event
* Added [TeamUpgradeEraType](https://docs.easy.gg/scripting/bedwars-scripting/types/teamupgradeeratype) to be used with the above event
* Modified the [TeamUpgradeType](https://docs.easy.gg/scripting/bedwars-scripting/types/teamupgradetype) file to reflect the newest Team Upgrades
* Modified the [TeamUpgradePurchased](https://docs.easy.gg/scripting/bedwars-scripting/events/teamupgradepurchased) event to reflect the removal of "tiers" from this event
* Marked Forge-related API as no longer compatible with the latest version of the game
  * This is due to the addition of match mechanics, which will soon be added to the Host Panel to configure in your custom match!

</details>

<details>

<summary><strong>1/23/24 - Various Bug Fixes</strong></summary>

* Fixed [`ChatService.sendMessage()`](https://docs.easy.gg/scripting/bedwars-scripting/services/chatservice) not sending messages after reverting to the legacy chat system (due to lag caused by the updated Roblox chat system)
* Fixed [`CombatService`](https://docs.easy.gg/scripting/bedwars-scripting/services/combatservice) not damaging or healing [KitEntities](https://docs.easy.gg/scripting/bedwars-scripting/objects/entity/kitentity), [ImageEntities](https://docs.easy.gg/scripting/bedwars-scripting/objects/entity/imageentity), or [CreatureEntities](https://docs.easy.gg/scripting/bedwars-scripting/objects/entity/creatureentity)
* [`BlockService.getAllBlocks()`](https://docs.easy.gg/scripting/bedwars-scripting/services/blockservice) now gets all blocks placed by [BlockService.placeBlock()](https://docs.easy.gg/scripting/bedwars-scripting/services/blockservice)
* [`EntityService.getNearbyEntities()`](https://docs.easy.gg/scripting/bedwars-scripting/services/entityservice) now returns all entities, both player and other entities
* Fixed Scriptable [Abilities](https://docs.easy.gg/scripting/bedwars-scripting/services/abilityservice) not existing for players who joined after the script began running
* Fixed [`EntityService.spawnCreatureEntity()`](https://docs.easy.gg/scripting/bedwars-scripting/services/entityservice)  not spawning Penguin [CreatureTypes](https://docs.easy.gg/scripting/bedwars-scripting/types/creaturetype)
* Fixed `setTransparency()` on [Models](https://docs.easy.gg/scripting/bedwars-scripting/objects/model)
* Fixed existing [`table`](https://docs.easy.gg/scripting/bedwars-scripting/utilities/table) methods
* Added `table.getn`, `table.freeze`, `table.isFrozen`, `table.create`
* Fixed [`AbilityService.getAbilities()`](https://docs.easy.gg/scripting/bedwars-scripting/services/abilityservice) only returning nil
* Fixed [Player](https://docs.easy.gg/scripting/bedwars-scripting/objects/player) modifier methods (listed below) working for only one player at a time
  * `registerSpeedModifier()`
  * `registerAdditionalAirJumps()`
  * `registerJumpHeightMultiplier()`
* Fixed console printing the incorrect line number for errors

And some clarification on commonly reported bugs:

* Image assets ONLY work when passed in the [rbxassetid](https://create.roblox.com/docs/projects/assets#rbxassetid) format. For example: `EntityService.createImageEntity("rbxassetid://11467634330", position)`
* Setting collisions on the model of Entities *does* work but is limited because we use [Humanoids](https://create.roblox.com/docs/reference/engine/classes/Humanoid), which force parts of the Humanoid to have collisions, such as LowerTorso and UpperTorso. Setting collisions will affect the 3D clothing of the kit model but not the Humanoid parts. Setting full collisions requires the use of [Collision Groups](https://create.roblox.com/docs/workspace/collisions), which we do not currently have an implementation for.

</details>

<details>

<summary><strong>10/4/23 - Player Scaling, Expanded Math and Table Libraries</strong></summary>

* Added `setScale()` to [Player](https://docs.easy.gg/scripting/bedwars-scripting/objects/player)
* Added `getInventory()` to [InventoryService](https://docs.easy.gg/scripting/bedwars-scripting/services/inventoryservice)
* Added `getPlayerByUserName()` to [PlayerService](https://docs.easy.gg/scripting/bedwars-scripting/services/playerservice)
* Added `getPlayerByDisplayName()` to [PlayerService](https://docs.easy.gg/scripting/bedwars-scripting/services/playerservice)
* Added `getCFrame()` and `setCFrame()` to [Entity](https://docs.easy.gg/scripting/bedwars-scripting/objects/entity)
* Added `emit()`, `clear()`, and `setLockedToPart()` to [ParticleEmitter](https://docs.easy.gg/scripting/bedwars-scripting/objects/particleemitter)
* Added [ConsumeItem](https://docs.easy.gg/scripting/bedwars-scripting/events/consumeitem) event
* Added `insert()` , `find()`, and `remove()` to the [table](https://docs.easy.gg/scripting/bedwars-scripting/utilities/table) library
* Added many more functions to the [math](https://docs.easy.gg/scripting/bedwars-scripting/utilities/math) library
* Added direct button to Scripts on the HUD in Custom Matches
* Fixed bug with `registerJumpHeightMultiplier()`

</details>

<details>

<summary><strong>9/8/23 - require</strong></summary>

* Added [require](https://docs.easy.gg/scripting/bedwars-scripting/utilities/require)

</details>

<details>

<summary>9/1/23 - Script Syncing, DataStoreService, ChatService</summary>

* Added script syncing between the [VS Code extension](https://marketplace.visualstudio.com/items?itemName=easy-games.bedwars-scripting-toolkit) and the in-game script editor
* Added [DataStoreService](https://docs.easy.gg/scripting/bedwars-scripting/services/datastoreservice)
* Added [ChatService](https://docs.easy.gg/scripting/bedwars-scripting/services/chatservice) with `sendMessage()`
* Added [PlayerAdded](https://docs.easy.gg/scripting/bedwars-scripting/events/playeradded) event
* Added [PlayerRemoving](https://docs.easy.gg/scripting/bedwars-scripting/events/playerremoving) event
* Added `clearInventory()` to [InventoryService](https://docs.easy.gg/scripting/bedwars-scripting/services/inventoryservice)
* Added `setLightInfluence()`, `setLightEmission()`, `setParticleRotation()`, `setRotSpeed()` to [ParticleEmitter](https://docs.easy.gg/scripting/bedwars-scripting/objects/particleemitter)
* Fixed bug with `PlaySoundForPlayer()`
* [Prompt](https://docs.easy.gg/scripting/bedwars-scripting/objects/prompt): Deprecated `setKeyboardKey()` in favor of `setKeyCode()`

</details>

<details>

<summary>8/25/23 - VSCode Plugin, User Input, Custom Abilities, Particle Emitters</summary>

* Released the [VS Code extension](https://marketplace.visualstudio.com/items?itemName=easy-games.bedwars-scripting-toolkit) for BedWars Scripting
* Added [InputService](https://docs.easy.gg/scripting/bedwars-scripting/services/inputservice) with `registerInputBegan()` and `registerInputEnded()`
* Added [AbilityService](https://docs.easy.gg/scripting/bedwars-scripting/services/abilityservice) with `createAbility()`, `enableAbility()`, and more!
* Added [ParticleService](https://docs.easy.gg/scripting/bedwars-scripting/services/particleservice) with `createParticleEmitter()`-> [ParticleEmitter](https://docs.easy.gg/scripting/bedwars-scripting/objects/particleemitter)
* Added [PartService](https://docs.easy.gg/scripting/bedwars-scripting/services/partservice) with `createPart()` -> [Part](https://docs.easy.gg/scripting/bedwars-scripting/objects/part)
* Added [UseAbility](https://docs.easy.gg/scripting/bedwars-scripting/events/useability) event
* Added `getTeamBed()` to [TeamService](https://docs.easy.gg/scripting/bedwars-scripting/services/teamservice)
* Added `getCFrame()`, `getPosition()`, `getRotation()`, and `getScale()` to [Model](https://docs.easy.gg/scripting/bedwars-scripting/objects/model)
* Added `getCFrame()`, `getPosition()`, `getRotation()`, `getTransparency()`, and `getSize()` to [Part](https://docs.easy.gg/scripting/bedwars-scripting/objects/part)
* Added `getPosition()` and `getSize()` to [TextLabel](https://docs.easy.gg/scripting/bedwars-scripting/objects/textlabel)
* Added `getPosition()` to [Generator](https://docs.easy.gg/scripting/bedwars-scripting/objects/generator)
* Added `getPosition()` to [Prompt](https://docs.easy.gg/scripting/bedwars-scripting/objects/prompt)
* Added access to the following Roblox Data Types:
  * [ColorSequence](https://create.roblox.com/docs/reference/engine/datatypes/ColorSequence)
  * [ColorSequenceKeypoint](https://create.roblox.com/docs/reference/engine/datatypes/ColorSequenceKeypoint)
  * [NumberSequence](https://create.roblox.com/docs/reference/engine/datatypes/NumberSequence)
  * [NumberSequenceKeypoint](https://create.roblox.com/docs/reference/engine/datatypes/NumberSequenceKeypoint)
  * [NumberRange](https://create.roblox.com/docs/reference/engine/datatypes/NumberRange)
  * [Vector2](https://create.roblox.com/docs/reference/engine/datatypes/Vector2)
* Added access to the following Roblox Enums:
  * [Font](https://create.roblox.com/docs/reference/engine/enums/Font) (ex: `Font.Roboto`)
  * [ParticleOrientation](https://create.roblox.com/docs/reference/engine/enums/ParticleOrientation) (ex: `ParticleOrientation.FacingCamera`)
* Added access to a limited set of functions from the [table](https://docs.easy.gg/scripting/bedwars-scripting/utilities/table) library
* Fixed bug where the [KeyCode](https://create.roblox.com/docs/reference/engine/enums/KeyCode) Enum was not accessible
* Fixed bug where [Knockback](https://docs.easy.gg/scripting/bedwars-scripting/objects/knockback) in [CombatService](https://docs.easy.gg/scripting/bedwars-scripting/services/combatservice) did not work without `fromEntity`
  * Added a `fromPosition` parameter to [Knockback](https://docs.easy.gg/scripting/bedwars-scripting/objects/knockback)

</details>

<details>

<summary>8/15/23 - <strong>Announcements, Gravity, Get Custom Match Host</strong></summary>

* Added [GravityService](https://docs.easy.gg/scripting/bedwars-scripting/services/gravityservice) with `setGravity()`
* Added [AnnouncementService](https://docs.easy.gg/scripting/bedwars-scripting/services/announcementservice) with `sendAnnouncement()`
* Added `getHost()` to [MatchService](https://docs.easy.gg/scripting/bedwars-scripting/services/matchservice)
* Added `hasEffect()` to [StatusEffectService](https://docs.easy.gg/scripting/bedwars-scripting/services/statuseffectservice)
* Added `setText()` to [ProgressBar](https://docs.easy.gg/scripting/bedwars-scripting/objects/progressbar)
* Added [WeaponSwing](https://docs.easy.gg/scripting/bedwars-scripting/events/weaponswing) event
* Added [PlayerPickupItem](https://docs.easy.gg/scripting/bedwars-scripting/events/playerpickupitem) event
* Added [PlayerDropItem](https://docs.easy.gg/scripting/bedwars-scripting/events/playerdropitem) event
* Added `math.abs()`
* Added `tostring()` and `tonumber()`
* Added horizontal scrolling to the in-game script editor
* Added optional `fromEntity` parameter to [`CombatService.damage()`](https://docs.easy.gg/scripting/bedwars-scripting/services/combatservice)
* Added optional `knockback` parameter to [`CombatService.damage()`](https://docs.easy.gg/scripting/bedwars-scripting/services/combatservice)
* Fixed the Upgrade Shopkeeper not despawning when a script stops
* Fixed `task.delay()` not cleaning up when a script stops

</details>

<details>

<summary>8/2/23 - Generators, Chatted Event, Speed and Jump Modifiers</summary>

* Added [GeneratorService](https://docs.easy.gg/scripting/bedwars-scripting/services/generatorservice) with `createGenerator()`
* Added [Generator](https://docs.easy.gg/scripting/bedwars-scripting/objects/generator)
* Added Speed and Jump modifiers to [Player](https://docs.easy.gg/scripting/bedwars-scripting/objects/player)
* Added [PlayerChatted](https://docs.easy.gg/scripting/bedwars-scripting/events/playerchatted) event
* Added in-world [TextLabels](https://docs.easy.gg/scripting/bedwars-scripting/objects/textlabel)
* Added modifiable knockback to the [EntityDamage](https://docs.easy.gg/scripting/bedwars-scripting/events/entitydamage) event
* Added `createItemModel()` to [ModelService](https://docs.easy.gg/scripting/bedwars-scripting/services/modelservice)
  * Convert any [ItemType](https://docs.easy.gg/scripting/bedwars-scripting/types/itemtype) into a [Model](https://docs.easy.gg/scripting/bedwars-scripting/objects/model)!
* Added `setPosition()` to [Entity](https://docs.easy.gg/scripting/bedwars-scripting/objects/entity)
* Added [os](https://docs.easy.gg/scripting/bedwars-scripting/utilities/os)
* Added [tick](https://docs.easy.gg/scripting/bedwars-scripting/utilities/tick)
* Added [wait](https://docs.easy.gg/scripting/bedwars-scripting/utilities/wait)
* Added [ItemService](https://docs.easy.gg/scripting/bedwars-scripting/services/itemservice) with `dropItem()`
* Added `setCFrame()` to [Model](https://docs.easy.gg/scripting/bedwars-scripting/objects/model)
* [Model](https://docs.easy.gg/scripting/bedwars-scripting/objects/model): Deprecated `rotate()` in favor of `setRotation()`
* [Model](https://docs.easy.gg/scripting/bedwars-scripting/objects/model): Deprecated `position()` in favor of `setPosition()`
* [Model](https://docs.easy.gg/scripting/bedwars-scripting/objects/model): Deprecated `scale()` in favor of `setScale()`

</details>
