Commit graph

477 commits

Author SHA1 Message Date
ORelio
c1cfaf520d Improve InvokeOnMainThread mechanism
Add documentation to make the invoke mechanism easier to understand
Make it clear in documentation that code is invoked synchronously
Use Action and Func<T> for minimizing the amount of code to write
Use type parameter T to automatically adjust return value type
Throw exceptions on the calling thread, not the main thread
2021-05-15 16:31:02 +02:00
ReinforceZwei
9e5364a4ff
Use a dedicated thread to process world data (#1585)
This change allow low-end devices to join servers without timeout
2021-05-12 20:07:53 +02:00
ReinforceZwei
b15c3a8e46
Fix calling schedule task cause deadlock (#1586) 2021-05-12 22:31:06 +08:00
ReinforceZwei
750684e010
ReplayMod: Prevent file backup while saving replay (#1562) 2021-05-01 20:38:41 +08:00
LesterLian
621e5e2200
Implement Realms support (#1533)
Resolve #51 

* Realms: update to new API; fix HTTP Get

* Realms: suggested changes

Co-authored-by: ORelio <ORelio@users.noreply.github.com>

* Realms: suggested changes

Co-authored-by: ORelio <ORelio@users.noreply.github.com>

* Add negative number support for JSON parser

* Nice print realms worlds result

* Option to join Realms world with world ID

* Suggested changes

Co-authored-by: ORelio <ORelio@users.noreply.github.com>

* Failure handle

Co-authored-by: ORelio <ORelio@users.noreply.github.com>

* world id paired with index

* fix text

* Clean up the code a bit

* Add setting for displaying Realms worlds

* Rename Realms worlds setting

* Put messages into translation file

Co-authored-by: Zizhen Lian <zizhlian@umd.edu>
Co-authored-by: ORelio <ORelio@users.noreply.github.com>
Co-authored-by: ReinforceZwei <39955851+ReinforceZwei@users.noreply.github.com>
2021-04-12 19:46:33 +08:00
ReinforceZwei
c15b071cad
New entity status packet event (#1506) 2021-03-21 22:17:19 +08:00
ORelio
49603db657
Server ping: Attempt 1.7+ ping first (#1507)
Forge detection might not work otherwise
2021-03-20 18:00:52 +01:00
ReinforceZwei
90505dbc4c
New method for getting looking location (#1503)
* New method for getting looking location

* improve
2021-03-13 22:23:58 +08:00
ReinforceZwei
240468ad22
Implement log to file logger (#1494)
* Implement log to file

Logger moved to it's own namespace

* Add lock to log file
2021-03-07 14:23:26 +08:00
ORelio
771a5b9e08 Catch Zlib exceptions (#1483)
Consider that connection is lost on invalid Zlib data
2021-02-27 22:37:21 +01:00
ReinforceZwei
9d41e2223d
Implement dynamic sleep time (#1459)
* Dynamic sleep time

* Small code refactor in dynamic sleep time

Co-authored-by: ORelio <ORelio@users.noreply.github.com>
2021-02-06 09:30:41 +08:00
ReinforceZwei
71eb1dca17
Implement browser sign-in method (#1447)
* Implement browser sign-in method

* Handle empty link

* Improve

* Handle user cancel login
2021-02-06 09:29:14 +08:00
ReinforceZwei
38a890f840
Implement new logger (#1426)
* Implement multi-channel logger

* Implement chat filter

* Improve a bit

* Improvement

* Add debug message filter and filter mode

* Avoid duplicate debug prefix string

Co-authored-by: ORelio <ORelio@users.noreply.github.com>
2021-01-29 07:45:18 +08:00
ReinforceZwei
939c8fb383
Fix crash on unknown packet IDs on some Forge servers (#1422)
* Fix unknown packet ID cause crash (#1419)
* Ignore unknown packet ID only if forge enabled
2021-01-18 20:12:53 +01:00
ReinforceZwei
0cbe543c30
Update to MC version 1.16.5 (#1417)
* Update to MC version 1.16.5

* Remove comments about protocol number
2021-01-16 21:33:40 +08:00
ReinforceZwei
106acab66f
Impove MS authentication error feedback (#1410)
* Impove MS authentication error feedback

* Modify old error message

* Improve 2FA error message

Co-authored-by: ORelio <ORelio@users.noreply.github.com>
2021-01-14 12:24:51 +08:00
ReinforceZwei
7cbf677e0c Fix compile error (#1397) 2021-01-07 14:38:51 +08:00
ReinforceZwei
c04c597aba
Implement Microsoft account login (#1397)
* Implement Microsoft account login
* Create proxied web request class
* Whole bunch of code that doesn't work
* I finally FIXED IT
It took me 2 hours to resolve the problem
* Fill the missed method summary
* Remove some unused code
* Revert http version
* Remove JSON parsing bug workaround
Not needed anymore as per e06438b582
* Remove comment asking about clientID
Client ID is used for session token refreshes. Random UUID without hyphens
Co-authored-by: ORelio <ORelio@users.noreply.github.com>
2021-01-06 21:14:51 +01:00
ORelio
aee09d9f52 Add TCP read timeout to server ping
See #1321, #1348, #1357
2020-12-05 14:24:41 +01:00
ReinforceZwei
53bd56100f
1.16+ Terrain and Movement support (#1353)
* First implementation
* Improve chunk reading performance
* Fix indentation
* Remove debug information
* Update MultiBlockChange packet
* Move skip varint to a method
* Fix crash when not using block palette
* Fix DataTypes.cs not compiling on .NET 4.0
Binary (0b) values not handled so converted to Hexadecimal (0x)
* Use the 1.16 chunk parsing code for 1.15 too
Document the differences in padding and factor the code
Co-authored-by: ORelio <ORelio@users.noreply.github.com>
2020-11-28 20:48:35 +01:00
mexiscool
28f47cc532
Adds support for villager trading (#1316)
* adds villager trading support
Adds handler for tradeList packet and selectTrade packet
* added extra line at end
* removed tab; removed size and hasSecondItem
removed a mistakenly added tab instead of 4 spaces. SelectTrade was already added in 1.13. Removed unnecessary size and hasSecondItem from trade dataType.
* Added VillagerInfo class and capitalized vars in Trade class
* Update VillagerInfo.cs
* Small formatting/naming adjustments
Co-authored-by: ORelio <ORelio@users.noreply.github.com>
2020-11-08 23:39:07 +01:00
DanisDGK
bea5161d6f
Add support for 1.16.4 (#1311) 2020-11-03 19:04:34 +01:00
ReinforceZwei
0c3f774c07 Fix interact entity not being correctly implemented 1.16+ 2020-11-02 19:01:23 +01:00
ORelio
d3f150ba12 Allow force-enabling Forge support for 1.13+ (#1184)
Skip login step and join even when forge info is missing in server info.
However, this only works for 1.13+. Server info retrieval is required
for enabling Forge support on older Minecraft versions.
2020-10-18 13:09:49 +02:00
ReinforceZwei
2017d5d652
Add support of language files (#1273)
* Basic support of language file
Only mapped main part of MCC.
* Translations function imporve
* Change translation file naming
* Fix default translation file naming
* Complete translation file mapping for main part
Command and ChatBot not done yet
* Complete translation mapping for commands
Except Entitycmd
* Complete translation mapping for ChatBots
* Add new method for replacing translation key
Just for Entitycmd. Be proud of yourself. We have a convenient method now.
* Complete all translation mapping
* Add default config and translation file to resource
* Remove untranslatable messages from default translation file
2020-10-17 13:41:31 +02:00
Amber Alex
0c88c18ea0
Change color of "feature not handled" from gray to red (#1265)
Changing the color for the "terrain/inventories/entities not handled for that version" message from gray to red.
2020-09-26 16:09:34 +02:00
ReinforceZwei
c97f6f1945 Fix mistake made in upgrading 1.16.3 2020-09-14 19:05:45 +02:00
ReinforceZwei
9bfb2bf6c7 Update supported version to 1.16.3
Nothing got changed in 1.16.3
2020-09-11 23:00:48 +02:00
ReinforceZwei
7e20e409a8
Add support for creating replay mod capture files (#1246)
* Add test replay handler
* Fix incorrect built raw packet
* Fix incorrect built raw packet
* Add filter
* Add not working zip lib
* Add dotNetZip lib and complete basic function
* Update ReplayHandler.cs
* Complete Replay handler
Without client player handling
* Complete replay mod
- New ChatBot OnNetworkPacket event
* Add auto-backup and command for Replay Mod
* Add ReplayMod description to readme
* Small naming changes, fix compile error on .NET4.0
* ReplayHandler slight optimizations
Use Path.Combine to automatically use Windows '\' or Linux '/'
Move re-usable common parts outside the Replay handler
Small optimizations in building JSON strings
Co-authored-by: ORelio <oreliogitantispam.l0gin@spamgourmet.com>
2020-09-06 21:51:42 +02:00
ReinforceZwei
2649e61a88 Fix 1.13 packet palette duplicated packet type 2020-08-27 19:33:08 +02:00
ReinforceZwei
3434d95b81
Add packet palettes (#1236)
* Add packet type palette
* Fix
* test new palette
* Fix 1.16.2 palette
* Add packet ID dumper
* Add document
* Update naming
* Delete old implementation of packet type
* Rename PacketTypeHandler to PacketType18Handler
* Fix packet type namespace
* Add dump to file method for packet type
* Rename packet palette version number
* Replace unknown packet type to explicit type name
Prevent duplicated key while creating reverse mapping
* Include packets ID in packet palette
Add packet palette helper class
* Remove packet ID dumper methods
As packets ID are included in source code now
2020-08-26 19:19:59 +02:00
ReinforceZwei
9b8213eca5 Fix metadata optional blockID type 2020-08-25 20:43:37 +02:00
Рома Данилов
017d9b1840
Crash Fix, add Respawn method (#1227)
* Crashes Fix
* Add Respawn
* Crashes Fix
* Update McClient.cs
* Update McClient.cs
* Fix Air item count to 0
2020-08-22 11:17:31 +02:00
Рома Данилов
c2e2e85063
Add Entity.Item, Entity.CustomName, OnEntityMetadata event (#1222)
* Add New Event
* new Event
* Add OnEntityMetadaTa
* Update ChatBot.cs
* Update Protocol18.cs
* Update Entity.cs
* EntityCMD Update
* Update IMinecraftComHandler.cs
* Update Protocol18.cs
* Update IMinecraftComHandler.cs
* Update McClient.cs
* Update IMinecraftComHandler.cs
* Update McClient.cs
* Update McClient.cs
* Update McClient.cs
* Update McClient.cs
* Update ChatBot.cs
* Update McClient.cs
* Update Entity.cs
* Create EntityPose.cs
* Update MinecraftClient.csproj
* Update McClient.cs
* Update EntityPose.cs
* Update Entity.cs
* Update McClient.cs
* Remove debug line
* Update Entitycmd.cs
* Update Entity.cs
* Update McClient.cs
* Update Entity.cs
* Update McClient.cs
* Update McClient.cs
* Update Entity.cs
* Update McClient.cs
* Update Entitycmd.cs
* Update Entitycmd.cs
* Update McClient.cs
* Update Entitycmd.cs
* Update Entitycmd.cs
* Update Entity.cs
* Update McClient.cs
* Update Entitycmd.cs
* Update Entitycmd.cs
* Update Entitycmd.cs
* Update Entitycmd.cs
* Update Entitycmd.cs
* Update Entitycmd.cs
* Crash Fix on Item
* Crashes Fix
* Update McClient.cs
* Crashes fix
* Update McClient.cs
* Update Entity.cs
* Update Entity.cs
* Update McClient.cs
* Update McClient.cs
* Update McClient.cs
* Update McClient.cs
* Update McClient.cs
* Update McClient.cs
* Update McClient.cs
* Update ChatBot.cs
* Update IMinecraftComHandler.cs
* Update McClient.cs
* Update Protocol18.cs
* Update ChatBot.cs
* Update IMinecraftComHandler.cs
* Update Protocol18.cs
* Update McClient.cs
* Fix unaddressed issues
Co-authored-by: ORelio <oreliogitantispam.l0gin@spamgourmet.com>
2020-08-20 18:36:50 +02:00
ReinforceZwei
6bbb7236e3
Add support for Minecraft 1.16.2 (#1214)
* Implement MC version 1.16.2 basic support
All packets ID update done
Tested in 1.16.2 craftbukkit server
* Implement MC 1.16.2 entity handling
New EntityPalette
* Add back protocol version checking for entity handling
Was removed during testing and forgot to add it back
* Implement inventory handling for MC 1.16+
Item ID got changed in 1.16+ so a palette is needed.
* Fix ChangeSlot command
What a joke
* Handle 1.16 new entity properties name
Convert new naming style to old style
* Revert "Handle 1.16 new entity properties name"
This reverts commit 52c7d29062.
* Update AutoAttack to use the new entity properties key
* Fix item type to ID conversion
* Sort item types by name
* Remove ZombiePigmanSpawnEgg
User ZombifiedPiglinSpawnEgg instead (new name for same item)
* Add missing 1.16.2 version strings
* Remove old ItemTypeGenerator
* Sort entity types by name
* Palette loading, instructions, NotImplemented err
Co-authored-by: ORelio <ORelio@users.noreply.github.com>
2020-08-17 17:08:50 +02:00
ReinforceZwei
08db87e5f6
Fix 1.16 entity metadata and equipment (#1211)
* Fix 1.16 Entity Equipment
* Fix #1209
Rename variable to meet naming rule
* Remove key checking
* Revert "Fix 1.16 Entity Equipment"
This reverts commit 6c46fc3ba4.
* Remove comment related to `data[key] = value`
Comment is not needed anymore as the value is set or overwritten automatically (no catch)
2020-08-17 11:43:10 +02:00
ReinforceZwei
2c8ec4aa4a
Implemented entity metadata to keep track of entity health (#1205)
* Implement entity metadata protocol handling
* Add health information for entity
* Make AutoAttack check entity health
* LivingEntity: Default health is 1.0 as per https://wiki.vg/Entity_metadata#Living_Entity
* Fix entity metadata for lower MC versions
* Fix commit  888297d (1.0f instead of 1.0)
* Add OnEntityHealth ChatBot event (Remove protocol-dependant stuff from McClient (undo part of 85c32b9))
* Remove OnEntityMetadata in favor of OnEntityHealth
Co-authored-by: ORelio <ORelio@users.noreply.github.com>
2020-08-15 15:32:46 +02:00
ReinforceZwei
526dabd1e7
Implement inventory mouse item dragging (#1208)
* Implement inventory mouse item dragging
* SendWindowAction: Format switch/align statements
* Document window action types
Co-authored-by: ORelio <ORelio@users.noreply.github.com>
2020-08-15 14:17:18 +02:00
ORelio
c3ace103c6 Fix crash on MC 1.7 update score (#1199) 2020-08-13 23:05:23 +02:00
ORelio
59981c785b Fix crash on MC 1.7 chat message (#1199) 2020-08-12 22:05:48 +02:00
ReinforceZwei
e6d34c3cf1
Add entity handling for 1.10 to 1.12.2 (#1195)
* Fix entity type data type for 1.13 below
* Add entity handling for 1.10 to 1.12.2
* Update comments for EntityPalette113
2020-08-11 13:44:18 +02:00
ORelio
a28409043c Implement Forge FML2 protocol (MC 1.13+) (#1184)
Forge uses a different handshake scheme in FML2 protocol.
This handshake scheme uses LoginPluginRequest/Response packets.
2020-08-11 12:52:38 +02:00
ORelio
294d85d5e1 Fix joining Forge servers without mods (#1189)
Regression from 74151097ff
2020-08-09 18:41:13 +02:00
ORelio
74151097ff Implement FML2 mod list in server ping (#1184) 2020-08-08 22:08:38 +02:00
ORelio
24b3dac2a3 Show server ping json in debug messages (#1184) 2020-08-08 14:30:39 +02:00
ORelio
ce83cc0a33 Use FileMonitor to synchronize Mailer bot (#1108) (v2)
Move SessionFileMonitor into a generic FileMonitor class
Use FileMonintor for both SessionCache and the Mailer bot
Allows multiple MCC instances to share the same database files

(Add files missing in the previous commit)
2020-08-07 11:58:44 +02:00
ORelio
5028cce2a5 Use FileMonitor to synchronize Mailer bot (#1108)
Move SessionFileMonitor into a generic FileMonitor class
Use FileMonintor for both SessionCache and the Mailer bot
Allows multiple MCC instances to share the same database files
2020-08-07 11:55:15 +02:00
ReinforceZwei
beebe506d1 Add Window Confirmation 2020-07-31 20:22:35 +02:00
ORelio
61ac5bb3d1 Small fixes for (#1149) 2020-07-29 21:40:16 +02:00
Dusan Milutinovic
a58e975630 Updated the protocol for 1.16/1.16.1. Fixed Auto Attack (Added a new field (sneaking) to the Interact Entity event (Only 1.16 and above)). Added Entity Pallete for 1.16/1.16.1. 2020-07-29 21:40:16 +02:00