* fix scripting being broken
scripting got broken due to being compiled as a single file application.
* move invoke to a helper function
also move MinecraftClient assembly fetch into the main assembly fetch loop
* Downgrade version of SingleFileExtractor
1.1.0 changed their internal API, so we use 1.0.1 to reduce the amount of reflection we need to do
* add exception messages
* Microsoft Sign-in: Migrate to our own client Id
- Drop support of "mcc" sign-in method
- Add nuget packages for decoding JWT
* Remove JWT nuget package
* Remove client secret
It is not needed after changing application type in Azure
* Change token validation method to expiration time
* Revert changes of dropping mcc sign-in method
* Add email pre-fill for browser sign-in
* Add MineCube.cs
* Clear unused comments and using directives
* Move the command to a chatbot class
* Set a maximum sleep time for block mining
* Add tool selection function
* Improve the block - tool detection
* Improve naming and comments
* Add missing blocktypes
* Add block-tool assertion and tool switching in hotbar
* Remove unused using declaratives and improve coordinate handling
* Move Material2Tool in the Mapping folder
* Add function to let the bot mine up to 5 blocks above its head
* Remove obsolete function to detect breakability
* Implement mineup command
Users can dig out a 2 high square manually. The client will walk through it
mining everything that is reachable above, while avoiding falling blocks and liquids.
* Refactor big parts of the code
Move the function for obtaining cubes to a seperate file.
Sort Unbreakables alphabetically.
Change the distance to wait in the mine function back to 2.
* Fix suggestions from review
Change several parts of the code according to the review
Add credits
* Convert the bot into a script file and move it to config folder
Adjust the script to be loadable with /script
Remove unnecessary code
Add public modifier to material2tool
* Add checking for lava and water for normal mining
* Remove MineCube.cs from chatbots
* Code re-format
Rename variables
Fix indentation
Co-authored-by: ReinforceZwei <39955851+ReinforceZwei@users.noreply.github.com>
* fix caps
* implement 1.17 without terrain
* properly switch order of Tracking Position and Locked for 1.17
* Update MinecraftClient/Protocol/Handlers/PacketTypesIn.cs
Co-authored-by: ReinforceZwei <39955851+ReinforceZwei@users.noreply.github.com>
Co-authored-by: ReinforceZwei <39955851+ReinforceZwei@users.noreply.github.com>
* 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>
* 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>
* 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>
* 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
* 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>
* Create item moving helper class
* Change the method calling order for joined game
Dispatch bot after things are initialized such as inventories
* Add GetItemMovingHelper ChatBot method
* 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
* 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>
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)
* Update for the mail script.
As requested, I added the synchronization between the config debugmessage bool and the one in the script. Furthermore, I added a way to send anonymous mails by writing "tellonym". The messages are saved as normal mails, which lets them count to the mail cap, due to the fact that the host knows the sender.
I added the script to the chat bots because of the problems, that the scripts have with serialization. Instead of rewriting the whole serialization part, my idea was to add the script to the other chat bots, to avoid the compiling issues. Then the serialization would work perfectly fine. Then you could remove the option class at some point and move all the settings to the config file with the addition to activate the whole script.
* Correction of debug message loading.
The object was missing and the change would be overridden a few lines later.
* Update McClient.cs
* Add Mail to config file
* Correcting the safe file.
* Small correction of Settings.c
* Update Mailscript
Added a failsafe version of the path changing commands. If a path could not be found, an error will be created and the path will be reseted to standart, to avoid endless chains of errors.
* Fix for the mail script
Removed a wrong option call. Removed the debug_msg condition around the path functions. => Users are aware of what happened (if they see the error) although they turned off debug_msg.
* Added some features.
Added a try statement to all number changing commands. Added a command to list all moderators to the console.
* Serialization Fix
There was a chance, that if two bots work on one file, and two users send messages in a short time period, that one bot deserializes the message and then the other bot deserialize the same file, before the other one could save its changes. This would lead to one message disappearing, because one bot never deserialized this message. For this I changed the whole serialization process.
All changes are now committed after the interval and not after an incoming mail command directly. All mails are safed temporarily in cache and get serialized after the interval. Due to this changes, you can determit when the individual bot changes the file (there are no more direct interactions with the file after a command, which lead to a certain randomness). Furthermore you can now set an interval of e.g. 2 mins and reset the interval of one bot with "resettimer" after one minute so that the bots won't disturb eachother and no files get lost.
* My idea of a manual.
This is my idea of a manual for the bot. Improvements of my language / further ideas are welcome! :D
* addIgnored [NAME] and removeIgnored[NAME]
Added an ignored list. Moderators can add players to the list. The bot won't react to them and just log to the console that they are ignored, everytime they are sending a message, to ensure that they are not accidently ignored. (Just if debug_msg is active.)
Especially useful if there are other chat bots on the server, which spam many messages that aren't useful for the mail system. Or block spammers etc.
* Add the three commands to the manual.
Added addignored, removeignored and getignored to the manual.
* Remove moderators. Implement Console Control.
Due to security concerns, I converted all moderator commands to console internal commands. Thereby only the host can change crucial settings. Special thanks to ORelio for the hint!
* Added empty statement check
Added if to all commands, where the syntax is not already protected by a try, so that an incorrect syntax (Empty args[] due to missing statement) won't crash the script.
* Changed the serialization fail
If the programm can't safe the file, because of some strange character for instance, it first tries to change the path back to normal and if this not helps, it creates a new, file.
* toggle mail sending/receiving
Add an option to turn mailsending and the listening to commands in chat on/off.
* Updated manual.
- Removed moderator commands.
- Removed moderator part in the network manual
+ added the two new commands
+ added a waring for nick plugins and minecraft renames
+ added a small syntax example
* Updated the Settings.cs file.
* Smaller fixes and additions
+ improved command reading of 'mail' & 'tellonym'
+ sorted internal commands alphabetically
+ host can set a maximum message length
+ host can accept commands from public chat
+ host can decide if 'self mailing' (mailing yourself) is accepted
+ new order makes 'getsettings' easier to read
+ new internal commands to toggle 'publiccommands' and 'selfmailing' as well as the maximum mail size
- removed the old command interpreter
* Small improvements and additions
Added a few commands and settings
* Completing getsettings
+ added 'publiccomands'
* Completed getsettings
+ Added 'publiccommand' to 'getsettings'
* Removed single bolean, added Dictionary
- removed all boleans in the option class
- removed all functions relating them
+ added Dictionary for the booleans
+ added a single function to set/toggle all booleans
* Removed Commands, added interpreter
- Removed all Register commands
- removed all integer methods
+ added a single mail command
+ added integer dictionary
+ added integer handling similar like bool handling
* Small fix
+ Changed the numbers in several methods to adjust them to the new syntax.
- removed parameters in several methods, because they got unneccesary
* Even smaller fix
+ Sorted 'getsettings' alphabetically
+ corrected a typo
* New Serialization method.
Now serializing through the .INI format! Thanks to ORelio, who helped me a lot! :)
* Added different time
Added the option to switch between utc and the time of the local machine for timestamps.
* Made timeinutc serializable
Added the bool to the serialization method.
* Adding the INIFile.cs
For Dictionary serialization.
* Reworked ignore feature
Ignored players are now serialized in a file and reloaded, after the bot enters a server.
* Mailer bot refactoring
Rename Mail to Mailer
Move options to MinecraftClient.ini
Make the bot much simpler by removing some settings
Create specific MailDatabase and IgnoreList classes
However the core functionality for users is the same
Settings removed:
- allow_sendmail: Cannot use Mailer if it's disabled
- allow_receivemail: Cannot use Mailer if it's disabled
- path_setting: Settings moved to MinecraftClient.ini
- debug_msg: MCC already has a setting for that with LogDebugToConsole()
- auto_respawn: MCC already has a built-in auto-respawn feature
- allow_selfmail: Is it really necessary to block self mails? ;)
- maxcharsinmsg: Automatically calculated based on max chat message length
- timeinutc: DateTime is not show to the recipient so I think it's not absolutely necessary
- interval_sendmail: Set to 10 seconds for now
Internal Commands removed:
- changemailpath: Now a static setting in config
- changesettingspath: Now a static setting in config
- updatemails: Already updated every 10 seconds
- getsettings: Shown on startup with debugmessages=true
- resettimer: Seems only useful for debugging
- setbool: Settings are static in config file
- setinteger: Settings are static in config file
All user commands are retained:
- mail
- tellonym
* Reload database for mailer network feature
* Merge Mail documentation to Readme.md
Co-authored-by: ORelio <oreliogitantispam.l0gin@spamgourmet.com>
Implement palette generation and investigate palette changes between
versions. Turns out 1.13- has legacy IDs, 1.14 switches to entity
palette and 1.15 refreshes the whole palette just to insert Bee.
Also refactor entity handling code here and there.