Commit graph

100 commits

Author SHA1 Message Date
ORelio
0b32bb5a0f Differenciate 1.9.1 and 1.9.2
See #135
2016-03-31 22:16:26 +02:00
ORelio
e2bf4e3063 Add MC 1.9.1 and 1.9.2 as supported versions
See #135
2016-03-31 19:25:52 +02:00
ORelio
75bbeb0b4b Fix write conflicts for disk session cache
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
2016-03-21 11:03:31 +01:00
ORelio
e8097206d0 Disable terrain and movements when not handled
Related to #131
2016-03-12 11:01:31 +01:00
ORelio
d45f75f9f4 Reduce output verbosity, default session cache
- 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
2016-03-10 13:29:05 +01:00
ORelio
d44a76e82c Fix Tab list item parsing for 1.8 & 1.9
Went unnoticed until, well, now.
2016-03-08 18:03:08 +01:00
ORelio
82e92f984b MC 1.9 : Add missing compatibility list entries 2016-03-05 19:33:44 +01:00
ORelio
a82c6823af Add support for Minecraft 1.9
Currently no terrain handling but anything else should work.

Related: #125
2016-03-05 19:13:45 +01:00
ORelio
578a6170ef Lower .NET requirement for Session Token
Changing constructs that weren't .NET 4.0 compliant.
Also fix \n to \r\n line returns in ProtocolHandler.cs
2016-03-05 19:10:13 +01:00
Justin Slauson
fec1687cb7 Updated docs and cleaned up. 2016-03-02 18:16:19 -07:00
initsuj
57c53be09f caching works. needs documentation and testing 2016-03-02 17:11:15 -07:00
Justin Slauson
64606c128f new token requests implemented. testing a success response is proving difficult. invaliding the token in a way that it can be refreshed is not documented. 2016-03-01 21:15:17 -07:00
Justin Slauson
fa2dbfef1a clientToken param info added to docs 2016-03-01 20:00:02 -07:00
Justin Slauson
7230cd726b validates with saved clienttoken 2016-03-01 19:58:04 -07:00
Justin Slauson
2861be757f clienttoken is created (if not passed) and added to auth request, then returned 2016-03-01 19:53:35 -07:00
Justin Slauson
8c065320c2 validates token successully 2016-03-01 19:40:54 -07:00
ORelio
b10e3e8521 Ignore Forge messages once Forge login is complete
In an attempt at fixing #117
2016-02-27 18:01:58 +01:00
Pokechu22
0617629570 Fix two bugs with 1.7.10 protocol
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.
2016-02-26 18:00:27 -08:00
Pokechu22
1ea8f119d9 Give ChatBots access to plugin channels.
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.
2016-02-07 14:55:10 -08:00
ORelio
bdbd8ab0b8 Remove debug printing line in ChatParser
See #107
2016-01-31 19:09:08 +01:00
Pokechu22
8ce685892c Update to 1.8's language files.
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.
2016-01-30 22:14:53 -08:00
ORelio
b0c8f82697 Add simple movements with /move command
- Determine if we can move to the specified direction
 - Add moving ability to the specified direction
 - Add /move command for triggering moves
 - Add move decomp. into steps (more natural)
 - Add pathfinding routines (still WIP)
 - SO YES YOU CAN NOW WALK USING MCC!!!
2015-12-12 16:48:38 +01:00
ORelio
49702e30b8 Add block material database
Taken from Bukkit's Material class, with credits.
Allows to know types and properties of blocks.
+ Use database for "is solid" checks
+ Add "can harm players" method
+ Faster movements, falling seems natural now
+ Shorter error message when ping failed
2015-12-09 23:04:00 +01:00
ORelio
5d8d42e3d1 Terrain: Fix coordinate parsing (negative coords)
- Optimize readNextUShortsLittleEndian network reading method
- Various coordinate computation issues, negative chunk offsets
- Properly parse negative coordinates for block change events
- Properly reach ground if less than 1 block over the ground
2015-12-08 00:34:40 +01:00
ORelio
cb00c28b6e Add world handling (and fall to ground)
- World is now properly parsed and stored from chunk data
- Block changes are also handled and world updated accordingly
- Added ground checking, the player will move down to reach the ground
- Performance tweaking in Protocol18, using lists instead of arrays
- Fix player look not properly skipped causing invalid location after
teleport
2015-11-30 15:30:49 +01:00
ORelio
2e4544fc5a Fix location sendback (Item pickup!)
Location is now properly sent back to the server
Item are now properly being picked up
(Need to enable movements in INI file)
2015-11-29 20:19:43 +01:00
ORelio
72bd485e67 Add basic location handling
- Retrieve player location from the server
- Send back player location from the server
- Requires that a specific setting is enabled
- Should allow items to be picked up by the player
- May also trigger some anti chead plugins
2015-11-27 17:16:37 +01:00
ORelio
5654871a57 First attempt at Realms list retrieval
> See #51 - Realms Support
+ Catch exception while retrieving player head
2015-11-27 16:52:45 +01:00
Pokechu22
3a19de82ae Finish forge hand shaking before enabling the chat prompt. 2015-10-25 12:20:38 -07:00
Pokechu22
fb87de1ff5 Fix compatability with Feed The Beast servers
More percisely, use varshorts for the length of the 3F packet,
as forge makes it longer.  Only really matters if a bazillion
mods are installed, which they are with FTB.
2015-10-25 11:51:53 -07:00
Pokechu22
b746b5612b Only add \0FML\0 to the IP if forgeinfo is not null (+ whitespace fixes) 2015-10-24 22:56:35 -07:00
Pokechu22
77277bcf84 Add SendPluginChannelPacket to the IMinecraftCom interface. 2015-10-24 22:35:17 -07:00
Pokechu22
7c8e856392 Fix connection to forge 1.7.10 servers.
This includes making sure plugin channels have their packet.
Also, it fixes a mistake in #92, where brand info doesn't send
length in 1.7.10 (same channel issue).  Finally, there's only 1
registry sent to the client in 1.7.10.
2015-10-24 21:17:28 -07:00
Pokechu22
ad38154f8f Full forge (1.8) connection support! 2015-10-24 19:54:38 -07:00
Pokechu22
c1c1c10d26 Relocate forge handshake code into the main packet handler.
Also, handle handshake reset.
2015-10-24 15:06:22 -07:00
Pokechu22
b154639a6b Handle forge handshake up to mod list sending. 2015-10-24 15:06:20 -07:00
Pokechu22
7cc87d8e71 Detect and store the list of forge mods. 2015-10-24 15:06:13 -07:00
Pokechu22
f67a3e3384 Attempted to add basic forge support. This does not work, but it's a start. 2015-10-24 15:06:05 -07:00
ORelio
29975da627 Merge onlyforlogin and enabled in proxy settings
The 'enabled' setting can now be set to 'login' for enabling proxy only
for logging in to the Minecraft account, and then connect to the server
directly without proxy. Useful when Minecraft login is blocked on some
network, but not Minecraft servers (port 25565) (original idea and
enhancement by ZizzyDizzyMC)
2015-10-22 20:56:08 +02:00
ORelio
e8a8ca4e7a Catch exception while moving cursor in ConsoleIO
- ConsoleIO bug report by ibspa.
- Also: NullReferenceException when closing connection
2015-10-20 22:55:29 +02:00
ORelio
b25a665c82 Delay BrandInfo sending
Implement Game Join event and send Brand Info only when server
acknowledged game join, as ZizzyDizzyMC did before, else server may
generate an invalid packet error because it was still in "login" mode
and not in "playing" mode. Fix second issue in #95
2015-09-30 20:01:57 +02:00
ORelio
8bd130eb3a Add setting for hiding system/xpbar messages
Add settings for disabling:
- System Messages
- XP Bar Messages
Fix #95
2015-09-29 14:07:11 +02:00
ORelio
8560753949 Extend BrandInfo setting
Brand Information tells the server what client is being used to connect
to the server, possible values are the following:

- none (do not tell anything)
- vanilla (tells that you are using MC vanilla)
- mcc (tell that you are using MCC + version)

This will usually not do anything unless plugins developers use this
information for developing some MCC interoperability eg more chat
interactions instead of using GUIs. This could also be used to block
third party clients, that's why brand information can be disabled or
changed to vanilla.
2015-09-29 14:03:33 +02:00
ZizzyDizzyMC
1223c91d79 Added setting to make sending brand info optional.
sendbrandinfo=true|false was added so we can optionally send client
info.  Enabled by default.
Added sendbrandinfo into auto-generated ini file.
Edited Protocol18.cs to reflect this with an "if" statement before
SendBrandInfo() is called upon.

Fixed minor mistake of not adding chatbotmessages into Parsemode.
Parsemode.Default was being used.
2015-09-04 09:54:38 -04:00
Pokechu22
9fefcb40ef Send MC|Brand information upon joining the game 2015-08-22 14:26:56 -07:00
ORelio
344749ead2 Add 'accepted' response pour resource packs
An 'accepted' response is sent by vanilla minecraft before sending
'successfully loaded', so let's do the same thing here. See #91
2015-08-21 17:22:09 +02:00
ORelio
a0683e1c46 Add '/' as valid separator for detecting 1.8 proxies
Should work with "Requires 1.7/1.8 (protocol v4)"
server info, reported by Yoann166.
2015-08-21 17:16:31 +02:00
ORelio
c1d2cbd84c Merge branch 'Indev' of https://github.com/ORelio/Minecraft-Console-Client into Indev 2015-08-21 16:56:51 +02:00
ORelio
86711adba8 Fake resource pack acceptance
Some server requires that players install a resource pack, and will kick
them if they doesn't. With this new feature MCC will automatically respond
"successfully loaded" for every "resource pack send" packet it receives.
Suggested by Yoann166 in issue #91
2015-08-21 16:54:24 +02:00
Pokechu22
295dfe717e Fixed issues with passwords containing unicode special characters.
The main fix is the change to ProtocolHandler's jsonEncode method.  Previously,
it used 'char.IsLetterOrDigit' to see if it needed to be escaped, but some
chars, such as "Ð", count as a letter but still need to be escaped.  The fix is
to check if it's in the right range, rather than using that method.

There's also some changes to those methods for performance and clarity reasons.
Most of this is using a StringBuilder rather than appending to the string.  Not
too important, but it makes things clearer.
2015-08-17 11:11:09 -07:00