1
2
Fork 0
mirror of https://github.com/mat-1/azalea.git synced 2025-08-02 14:26:04 +00:00
Commit graph

34 commits

Author SHA1 Message Date
mat
3f60bdadac
Move login state to the ECS (#213)
* use packet handlers code for login custom_query

* initial broken implementation for ecs-only login

* fixes

* run Update schedule 60 times per second and delete code related to run_schedule_sender

* fix tests

* fix online-mode

* reply to query packets in a separate system and make it easier for plugins to disable individual replies

* remove unused imports
2025-04-17 16:16:51 -05:00
mat
5272db8bb4 remove executable bit from files 2025-04-04 15:56:06 +00:00
mat
34f53baf85 update to rust edition 2024 2025-02-22 23:01:54 +00:00
mat
e485cf5501 fix incorrect comment in with_microsoft_access_token docs 2024-08-15 23:33:23 +00:00
mat
74831abbe4 modify some docs 2024-08-15 01:26:59 +00:00
Aditya Kumar
13afc1d6a4
Auth Customization Options (#159)
* Added Support for Custom Auth using `client_id` and `scope`

* fix: `Account::microsoft` and added lifetime to `Account::microsoft_with_custom_client_id`

* Added function `with_microsoft_access_token_and_custom_client_id`

* Removed Custom Scope.

* I got carried away, and made scope also customizable, later realized no customization is needed.

* Better Documentation and Minor fixes

* Added Custom Scope

* Added RpsTicket format for custom `client_id`

* Moved to non-static str

* fix example

Co-authored-by: mat <27899617+mat-1@users.noreply.github.com>

* fix doc grammer

* changed function signature

* fmt

* fixed example

* removed dead code

* Removed `d=` insertion in `client_id`

* removed unnecessary `mut`

---------

Co-authored-by: mat <27899617+mat-1@users.noreply.github.com>
2024-08-11 16:54:45 -05:00
mat
98f2c54c26 use minecraft_folder_path 2023-12-06 23:23:18 -06:00
mat
a42161a203 clippy 2023-12-03 02:42:45 -06:00
mat
1f46ef8c11 make it so plugins can send and receive packets during the login state 2023-12-03 02:41:09 -06:00
mat
9633508a3a replace log with tracing 2023-11-18 00:58:47 -06:00
mat
a920359c9a simplify some code related to Account being a component 2023-09-15 17:38:24 -05:00
mat
b6586d500c make Account a component 2023-09-15 17:09:04 -05:00
mat
7405427199
Mining (#95)
* more mining stuff

* initialize azalea-tags crate

* more mining stuff 2

* mining in ecs

* well technically mining works but

no codegen for how long it takes to mine each block yet

* rename downloads to __cache__

it was bothering me since it's not *just* downloads

* codegen block behavior

* fix not sending packet to finish breaking block

* mining animation 🎉

* clippy

* cleanup, move Client::mine into a client extension

* add azalea/src/mining.rs

---------

Co-authored-by: mat <git@matdoes.dev>
2023-07-14 22:20:40 -05:00
Adam Reisenauer
5e46996882
Add functions auth_with_link_code, get_ms_link_code, and get_ms_auth_token. (#88)
* Add option for grabbing authentication code for Microsoft seperately. Created two new functions, one that outputs the DeviceCodeResponse and one that uses this response to authenticate an actual account.

* Added documentation and cleaned up function names. Still wondering about code repeition

* reduce code duplication, more docs, cleanup

* clippy

---------

Co-authored-by: mat <git@matdoes.dev>
2023-06-24 17:09:43 -05:00
mat
dbfbffac14 Vec3::distance_to and clippy 2023-06-14 23:43:54 -05:00
mat
6188230009 add stuff related to chat signing
and also some stuff related to digging because i forgot to do a different branch lol
2023-05-26 15:18:04 -05:00
mat
8215331381 rename and export AccountOpts 2023-04-19 20:10:40 +00:00
mat
0d3a091c23 improve docs 2023-02-05 14:31:52 -06:00
mat
a5672815cc
Use an ECS (#52)
* add EntityData::kind

* start making metadata use hecs

* make entity codegen generate ecs stuff

* fix registry codegen

* get rid of worldhaver

it's not even used

* add bevy_ecs to deps

* rename Component to FormattedText

also start making the metadata use bevy_ecs but bevy_ecs doesn't let you query on Bundles so it's annoying

* generate metadata.rs correctly for bevy_ecs

* start switching more entity stuff to use ecs

* more ecs stuff for entity storage

* ok well it compiles but

it definitely doesn't work

* random fixes

* change a bunch of entity things to use the components

* some ecs stuff in az-client

* packet handler uses the ecs now

and other fun changes

i still need to make ticking use the ecs but that's tricker, i'm considering using bevy_ecs systems for those

bevy_ecs systems can't be async but the only async things in ticking is just sending packets which can just be done as a tokio task so that's not a big deal

* start converting some functions in az-client into systems

committing because i'm about to try something that might go horribly wrong

* start splitting client

i'm probably gonna change it so azalea entity ids are separate from minecraft entity ids next (so stuff like player ids can be consistent and we don't have to wait for the login packet)

* separate minecraft entity ids from azalea entity ids + more ecs stuff

i guess i'm using bevy_app now too huh
it's necessary for plugins and it lets us control the tick rate anyways so it's fine i think

i'm still not 100% sure how packet handling that interacts with the world will work, but i think if i can sneak the ecs world into there it'll be fine. Can't put packet handling in the schedule because that'd make it tick-bound, which it's not (technically it'd still work but it'd be wrong and anticheats might realize).

* packet handling

now it runs the schedule only when we get a tick or packet 😄

also i systemified some more functions and did other random fixes so az-world and az-physics compile

making azalea-client use the ecs is almost done! all the hard parts are done now i hope, i just have to finish writing all the code so it actually works

* start figuring out how functions in Client will work

generally just lifetimes being annoying but i think i can get it all to work

* make writing packets work synchronously*

* huh az-client compiles

* start fixing stuff

* start fixing some packets

* make packet handler work

i still haven't actually tested any of this yet lol but in theory it should all work

i'll probably either actually test az-client and fix all the remaining issues or update the azalea crate next

ok also one thing that i'm not particularly happy with is how the packet handlers are doing ugly queries like
```rs
let local_player = ecs
    .query::<&LocalPlayer>()
    .get_mut(ecs, player_entity)
    .unwrap();
```
i think the right way to solve it would be by putting every packet handler in its own system but i haven't come up with a way to make that not be really annoying yet

* fix warnings

* ok what if i just have a bunch of queries and a single packet handler system

* simple example for azalea-client

* 🐛

* maybe fix deadlock idk

can't test it rn lmao

* make physicsstate its own component

* use the default plugins

* azalea compiles lol

* use systemstate for packet handler

* fix entities

basically moved some stuff from being in the world to just being components

* physics (ticking) works

* try to add a .entity_by function

still doesn't work because i want to make the predicate magic

* try to make entity_by work

well it does work but i couldn't figure out how to make it look not terrible. Will hopefully change in the future

* everything compiles

* start converting swarm to use builder

* continue switching swarm to builder and fix stuff

* make swarm use builder

still have to fix some stuff and make client use builder

* fix death event

* client builder

* fix some warnings

* document plugins a bit

* start trying to fix tests

* azalea-ecs

* azalea-ecs stuff compiles

* az-physics tests pass 🎉

* fix all the tests

* clippy on azalea-ecs-macros

* remove now-unnecessary trait_upcasting feature

* fix some clippy::pedantic warnings lol

* why did cargo fmt not remove the trailing spaces

* FIX ALL THE THINGS

* when i said 'all' i meant non-swarm bugs

* start adding task pool

* fix entity deduplication

* fix pathfinder not stopping

* fix some more random bugs

* fix panic that sometimes happens in swarms

* make pathfinder run in task

* fix some tests

* fix doctests and clippy

* deadlock

* fix systems running in wrong order

* fix non-swarm bots
2023-02-04 19:32:27 -06:00
EightFactorial
9ee5e71bb1
Server functions and proxy example (#59)
* A couple useful things for servers

* Add proxy example

* Use Uuid's serde feature

* Add const options to proxy example

* Example crates go in dev-dependencies

* Warn instead of error

* Log address on login

* Requested changes

* add a test for deserializing game profile + random small changes

Co-authored-by: mat <github@matdoes.dev>
2023-01-21 22:14:23 -06:00
mat
70e2dfed16 wrap_comments = true 2022-12-08 18:39:35 -06:00
mat
431f9e90a7
Reauth on invalid session (#50)
* Reauth on invalid session

* fix to actually use new token and retry auth

* fix unused vars
2022-12-07 21:58:42 -06:00
mat
6eee543a33
Pathfinder (#25)
Pathfinding is very much not done, but it works enough and I want to get this merged.
TODO: fast replanning, goals that aren't a single node, falling moves (it should be able to play the dropper), parkour moves
2022-11-12 23:54:05 -06:00
mat
5ae890f941 replace an expect with unwrap_or_else 2022-10-30 15:42:43 -05:00
mat
329f8b1784 more docs 2022-10-30 15:28:19 -05:00
mat
99d3a5de9d improve docs a little more 2022-10-30 12:58:44 -05:00
mat
a9ff79a105 write more documentation 2022-10-23 14:46:06 -05:00
43799946da make Account clonable 2022-10-18 17:01:28 +00:00
mat
4cef62e8e4
Microsoft Authentication (#29)
* a

* try to do more work on auth signing (untested)

* well auth works when i remove the d= so

* auth stuff

* sessionserver stuff

* add auth in azalea-protocol/client

* caching*

refreshing microsoft auth tokens isn't implemented yet, also i haven't tested it

* how did i not notice that i had the code duplicated

* fix cache

* add refreshing msa token

* replace some printlns with log::trace

* auth works!

* Update main.rs

* fix clippy warnings
2022-10-16 22:54:54 -05:00
mat
5a9fca0ca9
Better errors (#14)
* make reading use thiserror

* finish implementing all the error things

* clippy warnings related to ok_or

* fix some errors in other places

* thiserror in more places

* don't use closures in a couple places

* errors in writing packet

* rip backtraces

* change some BufReadError::Custom to UnexpectedEnumVariant

* Errors say what packet is bad

* error on leftover data and fix

it wasn't reading the properties for gameprofile
2022-08-06 02:22:19 -05:00
mat
460bdfb8bb merge ClientState and Client 2022-06-25 16:23:40 -05:00
mat
b030b0ea33 start adding moving 2022-06-24 23:10:59 -05:00
mat
c9a070f711 Fix some clippy warnings 2022-06-19 22:01:54 -05:00
mat
fc3151f89d account.rs and client.rs 2022-06-18 16:54:49 -05:00