Skip to content

Another Minecraft Chat Client written from scratch in Java. It has inventory handling, movement, automatic messages and many more little things. It supports Minecraft versions 1.8 to 1.18.1

License

Notifications You must be signed in to change notification settings

qiuzilu/Another-Minecraft-Chat-Client

 
 

Repository files navigation

Another Minecraft Chat Client

license version lastCommit version Java CI with Gradle

AMCC is a GUI application that lets you join a Minecraft server and chat freely without opening your Minecraft game.

Main features

  • 📖 Complete GUI with Minecraft styled server list, in-game player list with skins and a tabbed pane allowing you to chat on multiple clients.
  • 🎨 Minecraft style UI elements, such as chat font (Minecraftia), configurable buttons and text fields.
  • 📋 Tray support.
  • ⚙️ My own lightweight implementation of Minecraft protocol, supporting versions 1.8 to 1.18.1.
  • 📦 Basic inventory handling and item using.
  • ⏰ Automatic messages and responses, perfect for AFKing.

📙 My goals

This project is my take on implementing Minecraft's protocol from scratch.
It started as a simple command line chat client and was quickly wrapped in a GUI.
Now my main goal is to implement as many features from Minecraft's original protocol as I can without using any other third-party libraries.

✉️ Automatic messages

AMCC offers two ways of sending chat messages without user's intervention.
They are defined per connection, and are not saved in program's main save file,
but they can be saved separately.
You can access their settings in the "Auto. messages" tab in the control panel of client's connection.

⏰ Interval messages

Interval messages allow user to send chat messages periodically.
For example you can use them to automated advertisements.
Setting up interval messages is relatively easy.
You just have to add your messages using the "+" button, adjusting values in delay and interval fields and finally check the "Enable" check box.
Your client should now send defined messages every x seconds/minutes as specifed by user.

🔔 Automatic responses

Automatic responses can be used to automatically respond to certain messages.
You can use them, for example, to reply to private messages while you are AFK,
or to respond in-game events, or even commands.
They are a little more complex to set up than interval messages, but it shouldn't be a hassle to understand all available options.
First you have to add a rule.
Rules consist of three basic components:

  • Triggers - they determine when the client should respond.
    If for example there is a trigger "Pie", client will respond when someone says "Pie" on chat.
    Triggers have two modes:
    "Or" - is the main mode. It activates the rule when any of triggers is present.
    For example, when you added "Foo" and "Bar", client will react when someone says either, or both of these words.
    "And" - will activate only when every defined phrase is present in one chat message.

  • Exceptions - they determine when the client should not respond.
    When user defines "Foo" as a trigger, and "Bar" as an exception, client will respond if received message contains the word "Foo", but won't react to "Foo Bar".

  • Responses - they are sent by the client when triggers are activated.
    They have 3 modes:
    "Random" - every activation a random phrase from list is choosen and sent by client.
    "Ordered" - phrases will be sent one by one in sequence every activation, looping at the end of list.
    "All" - all phrases will be sent at once after activation.

📦 Inventory handling

⚠️ Caution If you have a mcc.prefs file from version v1.1.0 or older and you want to use inventory handling make sure to first enable it in settings!

Inventory handling is an experimental, yet useful feature, that allows you to manage items in your/remote inventory. It was added in pre-release v1.1.0 and it does NOT work with Minecraft version 1.17 yet.

🔌 What you can do with it

  • Interact with server through a GUI. For example if server you connect to is a lobby server, and it opens a window for you to choose a game mode, you can simply click on an item in window like in normal Minecraft client.
  • Use your own inventory, that includes:
    • Using items in hotbar (eating food, potions, using shield, etc.)
    • Organizing items by shift-clicking them (with second hand support)
    • Wearing armor
    • Dropping items

❓ How to use

When you are in a window opened by server, you have 3 options:

  • You can simply click on an item. It will act as a normal left click performed by client.
    Be cautious, as if you click an item in NORMAL opened inventory (enderchest for example), it will be DROPPED when you close that inventory!

  • Right click on item and select "Shift click". It will perform shift-click on selected item, and when done in normal window, it will take clicked item to your inventory.

  • Right click and select "Drop". This will instantly drop selected item.

In your player inventory you have more control over items:

  • After left-clicking on an item in hotbar, client will change its hand to selected slot and will try to use item in it.
  • Right-click menu allows you to do the following things:

    In the whole inventory:
  • "Shift click" - performs a shift-click on selected item
  • "Drop" - will drop the item instantly

    In hotbar (the last 9 slots on the bottom):
  • "Set slot" - will change client's held slot to selected item
  • "Use" - will change client's held slot and use selected item. For example if you select food, it will be eaten.
  • "Stop using" - will stop client from using current item. For example if you charged a bow, it will be shot.
  • "Swap items in hand" - will swap items in selected slot and your second hand.

🔥 Bugs

These are bugs that will be solved in future releases:

  • Items in versions higher than 1.12.2 may not always display properly. They will have names and textures of other item.
    I am not sure what causes this yet

  • Every "shift click" and "drop" action relies on Confirm Transaction packets sent from server.
    If server responds to client's action, affected item will be updated in GUI, otherwise it won't.
    It is to ensure that client's inventory stays in sync with server version of it, but it may cause sync issues if server does NOT send Confirm Transaction packets.
    In case you notice that your inventory is not synchronized with server, try to reconnect your client.

If you encounter a bug that disconnects your client or breaks it in a way that it is hard to use, you can disable inventory handling system in settings.

📓 Translations

Since v1.2.0 most of client's GUI and messages can now be translated to other languages.

📖 I want to translate!

If you want to translate AMCC to your own language, take this file, translate every line in it (or at least most of them), rename it to match the code of your language (for example PL.properties), open a new issue as "Translation request", and attach your file in it.
If you done everything correctly, your translation will probably be added in next release, and I will give you a credit in section below.

Current translations

  • English - Defective4
  • Polish - Defective4

⬇️ Downloads

You can download latest executable version Here

✔️ List to do

  • Player list support
    • Player skins
    • Exporting player skins
  • LAN games
  • Basic player actions (sneaking, sprinting)
  • Health updates and automatic respawning
  • Appearance settings
  • Movement
  • Statistics (1.8 - 1.12.2)
  • Inventory handling (experimental)
  • Tab completion
  • Usage statistics
  • Graphical map with entity rendering
  • Plugins

About

Another Minecraft Chat Client written from scratch in Java. It has inventory handling, movement, automatic messages and many more little things. It supports Minecraft versions 1.8 to 1.18.1

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%