rosegold
Minecraft client written in Crystal, following the botting rules of CivMC
Rosegold is a custom Minecraft botting client with the following goals:
- Efficiency and accessibility: Rosegold aims to make botting accessible to all Civ users by providing a clean and easy-to-understand DSL for creating bots, while also ensuring that the client remains efficient.
- Headless with a headful feel (coming soon): Although Rosegold is a headless client, it seeks to address the limitations of current bots by providing a proxy that allows a standard vanilla Minecraft client to connect, spectate, and control. This approach offers the benefits of headless clients while maintaining a headful user experience.
- Compliance with server-specific botting rules: Rosegold is designed for use on servers with specific botting rules, such as CivMC, which restrict bots from seeing or hearing. The client makes it challenging to create bots that violate these rules, ensuring a fair gameplay experience.
- Portable and easy-to-distribute: Leveraging Crystal's ability to compile into portable binaries, Rosegold aims to simplify the distribution process for developers, making it easier to set up and manage bots for their nations.
How to Start Writing Bots
crystal init app <nameforyourbotrepo>
-
Add the dependency to your shard.yml
:
dependencies:
rosegold:
github: grepsedawk/rosegold.cr
version: ~> 0.4
- Run
shards install
-
Start with a basic example by writing a file in src/
, something like...
require "rosegold"
bot = Rosegold::Bot.join_game("play.civmc.net")
sleep 3
while bot.connected?
bot.eat!
bot.yaw = -90
bot.pitch = -10
bot.inventory.pick! "diamond_sword"
bot.attack
bot.wait_ticks 20
puts bot.feet
puts "Tool durability: #{bot.main_hand.durability} / #{bot.main_hand.max_durability}"
end
Contributing
- Fork it (https://github.com/grepsedawk/rosegold.cr/fork)
- Create your feature branch (
git checkout -b my-new-feature
)
- Commit your changes (
git commit -am 'Add some feature'
)
- Push to the branch (
git push origin my-new-feature
)
- Create a new Pull Request