Fixes#165. Reduced debug info was added in 1.8, and isn't found in 1.7. Since it isn't there in 1.7, the client would crash when it attempts to read it on the join game packet.
The nether doesn't send skylight, so we need to ignore skylight in the nether for it to work. However, that means that dimensions need to be tracked, so the respawn packet is now also tracked (and the forge dimension override packet)
Will use random waits when a write conflict is detected.
This should allow several clients to write at the same time.
Inspired from CSMA/CD (ethernet way of handling collisions).
Bug report by TNT-UP @ MC Forum post no.1684
- Memory session cache will be used by default
- Verbose messages are now hidden by default
- Improve ping procedure's Forge handling
- Fix 1.8.9 and 1.9.0 in mcversion setting
- SessionCache.cs: fix LF into CRLF
- Use 1.9 translations instead of 1.8
The first bug is that the list isn't cleared in some cases, meaning new packets get data from the previous packet if it isn't read fully. Most commonly, this happens with a plugin channel message. The second bug happens because lists don't throw IndexOutOfRangeExceptions, but instead throw ArgumentOutOfRangeExceptions. This caused the catch for ignoring message types to not occur, instead causing the client to crash. This only happens in 1.7.10, where the message type is not included.
Most likely, these changes will fix the bugs seen in #114 and #117, although they may be caused by other bugs.
Since messages can't be sent in Initialize(), a method that's called when the chat bot can first send messages is needed. This method is called when the login completes or when the bot is loaded if the login is already been completed.
Chatbots may find it useful to send messages over plugin channels. This allows REGISTERing, UNREGISTERing, and sending over plugin channels, with built-in checking if the server also registered the channel (which can be disabled by the bot if needed). Unused channels are UNREGISTERed when a bot is disabled.
I ocasionally see untranslated messages; this should resolve all of them.
The changes to Settings.cs, the core changes, just update the index file used and the normal hash. The changes in ChatParser.cs primarilly fix the name: 1.7.4 used 'lang/en-GB.lang' but 1.7.10 and 1.8 use 'minecraft/lang/en-GB.lang' and 'realms/lang/en-GB.lang' (and realms comes first), meaning that the wrong language file is selected. The name is updated to make sure the right file is used. I also corrected the indentation in that block.
Because bots can send several messages quickly, this adds an option to slow down the rate at which messages are produced (to avoid issues with antispam plugins). This should help solve part of the troubles @mobdon was having in #105.
Right now the default time is 2 seconds per message. However, messages are sent imediately if the bot doesn't need to delay (so if it's a bot that only outputs one or two messages, those will still happen imediately). Also, note that it's limited per-bot right now.
I also added an optional parameter to the SendText method so that bots can avoid this behavior if they need to. In some cases, they'll want to send multiple messages.