Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.2.0 #63

Merged
merged 19 commits into from
Dec 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 2 additions & 17 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,28 +33,13 @@
!Thunderstore
LC_API.dll

## Projects
## Solution
!LC-API.sln

### LC-API
### LC-API Project
!LC-API/
LC-API/[Bb]in/
LC-API/[Oo]bj/

### Source Modules
!BundleAPI
!ClientAPI
!Comp
!Data
!Exceptions
!Extensions
!GameInterfaceAPI
!ManualPatches
!ServerAPI
!Networking

### Source Files
!**.cs

# Explicit exceptions/ignores
**.user
138 changes: 70 additions & 68 deletions Thunderstore/README.md → CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,108 +1,110 @@
# LC-API
The definitive Lethal Company modding API. Includes some very useful features to make modding life easier.
# Changelog

# For Developers
If you want to use the API in your plugin, add the LC_API.dll as a project reference!
All notable changes to this project will be documented in this file.

# Features
AssetBundle loading - Put asset bundles in BepInEx > Bundles and load them using BundleAPI.BundleLoader.GetLoadedAsset
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

ServerAPI - Utilities relating to the network and server. This includes:
## [Unreleased]

ModdedServer - Automatically alerts other users when you host a server that your server is modded.
It also lets mod authors make their mods put users in special matchmaking where they can only play with other modded users
## Version [3.2.0]

Networking - Easily send data across the network to sync data between clients
- Added `Networking` namespace
- Provides much better networking that the previous `ServerAPI.Networking` class, which still exists for backwards compatibility.
- See the [wiki](https://github.com/u-2018/LC-API/wiki/Networking) for usage instructions.
- Added CI/CD github actions.
- Changed a hard-coded file location to be dynamically based off of where the plugin file is to prevent an issue with manual installation.
- Significantly revamped project structure.

# Releases
## Version [3.1.0]

# Version 1.0.0
- Release
- Added `Item` class for interacting with grabbable objects easily.
- The `Player` class now has multiple new properties for inventory management.
- `Player.Inventory` will return a `PlayerInventory` for this.
- The `Player.Joined` event should now work properly on LAN.

# Version 1.1.0
- General bug fixes for Networking
## Version [3.0.2]

- The local player now will NOT receive data that they broadcast. The bool value on the receive delegates is also gone. If you were using Networking, you will need to ajust your code.
- Fixed the command handler "eating" messages if they started with the command prefix, but weren't registered as commands.

# Version 1.1.1
- General bug fixes for Networking
## Version [3.0.1]

- Plugin developers NEED to update to this version as it includes a fix for a bug that prevented Networking from being used.
- Fixed `Player.HostPlayer`.

# Version 1.2.0
- Added new GameInterfaceAPI. Documentation will be created soon.
## Version [3.0.0]

- Added new CheatDatabase with the purpose of catching users trying to join non-modded servers with cheaty mods. The CheatDatabase also allows for the host to view all mods installed by people joining. (As long as they have LC_API installed).
- Removed automated bundle loading.
- Legacy loading will still automatically load bundles if wanted.
- Added event system.
- More events to be added in future.
- Added `Player` class for interacting with players easily.
- `ModdedServer.GameVersion` will now contain the base game version even if LC API modified the version to set modded only.

# Version 1.2.1
- Adjusted README formatting.
## Version [2.2.0]

# Version 1.3.0
- Changed how the BundleLoader in the BundleAPI loads assets to fix issues caused by downloading mods from mod managers. The path BepInEx > Bundles is outdated and should not be used anymore.
- Added a command handler.
- The bundle loader will only attempt to load actual bundles.
- Added a temporary fix for lethal expansion bundles. Will be looking into a long term solution in the next update.
- The local player now will NOT receive data that they broadcast. The bool value on the receive delegates is also gone. If you were using Networking, you will need to ajust your code.

# Version 1.4.0
- Changed how the BundleLoader in the BundleAPI loads assets to fix issues with certain languages. This will break some mods, but a config option is included to revert to the old system so you can still use older mods.
## Version [2.1.2]

- If you are a plugin developer, use GetLoadedAsset to get an asset, instead of using the asset dictionary. This ensures that your plugin will still work even when changes like this are made.
- Updated to game version 45.

# Version 1.4.1
- LC_API should now be able to load no matter if the Hide Manager GameObject option is on or off.
## Version [2.1.1]

- A config option has been added that will disable the BundleLoader.
- Actually fixed the BundleLodaer loading assets twice.
- Added new CheatDatabase with the purpose of catching users trying to join non-modded servers with cheaty mods. The CheatDatabase also allows for the host to view all mods installed by people joining. (As long as they have LC_API installed).

# Version 1.4.2
- Fix for the new config option causing the API to fail to initialize.
## Version [2.1.0]

# Version 2.0.0
- Changes to the BundleLoader to stop conflicts with other plugins loading assets without the BundleLoader.
- Fixed the BundleLodaer loading assets twice.

- Changes to Networking and GameState events, plugins using these will need to be rebuilt.
## Version [2.0.0]

- Changes to the BundleLoader to stop conflicts with other plugins loading assets without the BundleLoader.
- Changes to Networking and GameState events, plugins using these will need to be rebuilt.
- Added GameTips to GameInterfaceAPI. GameTips uses a tip que system to ensure no popup tip messages overlap with eachother.

- Changed the CheatDatabase to now (in theory) work for all players, not just the host.

- Changes the CheatDatabase to use GameTips to display information. It will still output information to the logs.

# Version 2.1.0
- Fixed the BundleLodaer loading assets twice.
## Version [1.4.2]
- Fix for the new config option causing the API to fail to initialize.

# Version 2.1.1
- Actually fixed the BundleLodaer loading assets twice.

# Version 2.1.2
- Updated to game version 45.
## Version [1.4.1]

# Version 2.2.0
- Added a command handler.
- LC_API should now be able to load no matter if the Hide Manager GameObject option is on or off.
- A config option has been added that will disable the BundleLoader.

- The bundle loader will only attempt to load actual bundles.

- Added a temporary fix for lethal expansion bundles. Will be looking into a long term solution in the next update.
## Version [1.4.0]

# Version 3.0.0
- Removed automated bundle loading.
- Legacy loading will still automatically load bundles if wanted.
- Changed how the BundleLoader in the BundleAPI loads assets to fix issues with certain languages. This will break some mods, but a config option is included to revert to the old system so you can still use older mods.
- If you are a plugin developer, use GetLoadedAsset to get an asset, instead of using the asset dictionary. This ensures that your plugin will still work even when changes like this are made.

- Added event system.
- More events to be added in future.

- Added `Player` class for interacting with players easily.
## Version [1.3.0]

- `ModdedServer.GameVersion` will now contain the base game version even if LC API modified the version to set modded only.
- Changed how the BundleLoader in the BundleAPI loads assets to fix issues caused by downloading mods from mod managers. The path BepInEx > Bundles is outdated and should not be used anymore.

# Version 3.0.1
- Fixed `Player.HostPlayer`.
## Version [1.2.1]

# Version 3.0.2
- Fixed the command handler "eating" messages if they started with the command prefix, but weren't registered as commands.
- Adjusted README formatting.

# Version 3.1.0
- Added `Item` class for interacting with grabbable objects easily.
- The `Player` class now has multiple new properties for inventory management.
- `Player.Inventory` will return a `PlayerInventory` for this.
- The `Player.Joined` event should now work properly on LAN.

# Version 3.2.0
- Added `Networking` namespace
- Provides much better networking that the previous `ServerAPI.Networking` class, which still exists for backwards compatibility
## Version [1.2.0]

- Added new GameInterfaceAPI. Documentation will be created soon.

## Version [1.1.1]

- General bug fixes for Networking

## Version [1.1.0]

- General bug fixes for Networking

## Version [1.0.0]

- Release
6 changes: 0 additions & 6 deletions LC-API/LC-API.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,6 @@
</ItemGroup>
</Target>

<ItemGroup>
<Compile Remove="Thunderstore\**" />
<EmbeddedResource Remove="Thunderstore\**" />
<None Remove="Thunderstore\**" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="BepInEx.Analyzers" Version="1.*" PrivateAssets="all" />
<PackageReference Include="BepInEx.Core" Version="5.*" />
Expand Down
Loading
Loading