Content creator: Mingshi Yang (YMS2001). Contact: mingshi3@illinois.edu
Play pool in Minecraft, like in real life!
- Abstract
- Installation
- User Guide and Demo
- How It Works
- Frequently Asked Questions
- Notes
- Terms of Use
- More About Squid Workshop
This datapack is for Minecraft and pool lovers. Pool here means cue sport including Snooker, Billiards, 8/9 Ball, etc.
Pool datapack supports singleplayer and duo games with Minecraft Java Edition 1.16+.
Supported game modes are Practice Mode, Snooker, 9 ball, UK 8 ball, and CN 8 ball.
- Step 01 Download this repository as a zip and unpack.
- Step 02 Go to minecraft directory, usually "C:/Users/youUserName/AppData/Roaming/.minecraft" if in Windows.
- Step 03 Move your "Pool-ResourcepackFolder-Squid-Workshop-YOURVERSION" folder (not the root folder) into .../resourcepacks folder.
- Step 04 Choose the world folder in which you want to install the packs. Go to .../saves/world/datapacks folder.
- Step 05 Move your "Pool-Datapack-Squid-Workshop-YOURVERSION" folder (not the root folder) into .../saves/world/datapacks folder. Each world must have its own copy of the datapack.
- Please install Math Datapack following similar steps. Copies of Math-Datapack-v1.0.0 files are provided for convenience.
- Step 06 Open Minecraft and open the world.
- Step 07 Press Esc, click options... and resourcepacks... and move Pool-Resourcepack-Squid-Workshop-YOURVERSION to the upper right. Do this everytime you change the game version.
- Step 08 Type
/reloadcommand then press enter. - Step 09 Recommended: Type
/gamerulecommand to set themaxCommandChainLengthormax_command_sequence_lengthto 131072 or higher. - Step 10 Enjoy
If not working, check whether the datapack is enabled by /datapack list and enable it by /datapack enable "datapackname".
Although not required, zipping the datapack and resourcepack folders can significantly reduce file sizes.
- 1.16-1.20: The datapack and resourcepack will work for various supported game versions, although the game may notify you the packs are incompatible when you install them. To remove the compatibility warning, you can follow this page and modify pack.mcmeta files according to your game version.
- 1.21: A set of unified datapack
Pool-Datapack-Squid-Workshop-1.21and resourcepackPool-ResourcepackFolder-Squid-Workshop-1.21are now provided and intended to work for all 1.21 versions. TheReleases_1.21folder containing the minor-version-specific packs will be removed in future.
Please let me know if the packs are actually incompatible (broken) with any versions higher than Java Edition 1.16.1.
The videos might be outdated but they still contain all essential demos of the datapack.
Most interactions do not require typing commands. You only need to click <text like this> in the chat or select the game’s suggested commands.
🔔 Tip: Disable “Force Unicode Font” for a better experience.
01_load_datapack_EN.mp4
After installing (reloading) the datapack, the chat will guide your next steps. Click it to open the “Command Window,” a multifunctional control panel. You can also run the following command at any time:
/function app:help/pool/commandwindow
If this is your first time loading the datapack, click <text like this> to choose your language and game version (not needed in 1.21+), and complete the suggested friction settings. The above demo uses default values.
🔴 Make sure the math datapack is also loaded. You may need to reload once for it to initialize properly.
02_load_resourcepack_EN.mp4
After placing the resourcepack in the correct folder, you may need to enable it manually in-game. Make sure the version is correct.
03_open_settings_help_EN.mp4
You can access all settings from the Command Window. For a detailed explanation, click <Settings Help> below the Command Window. You can configure settings such as physics parameters, ball spin, cheat permission, cue ball appearance, and more. To run:
/function app:settings/
Recommended values will appear during adjustment of physics parameters. Values that are too large or too small may overflow the scoreboard and cause game instability.
04_get_cuestick_EN.mp4
Use the Command Window to get a cue stick (function as a bow when no game is active).
05_set_table_EN.mp4
Use the Command Window to place a new table. Any existing tables will be removed. You can freely choose the table’s width and length (in meters). Smaller tables reduce red balls in Snooker; larger tables usually mean higher difficulty.
06_open_lobby_EN.mp4
Use the Command Window or click <View Lobby> after placing a table. Singleplayer and multiplayer games both begin in the lobby. You can also spectate (receive interactive info such as score from active players).
07_start_singleplayer_game_EN.mp4
Choose a singleplayer mode in the game lobby and confirm to start. Interactive info such as target balls and score will appear in the lower-left chat. In singleplayer Snooker, you only need to outscore your penalty loss to win. In singleplayer 8 Ball, you play both sides, so there is no win/loss. At the end of a Snooker match, players receive a rating based on average score per turn.
If the cue ball is off the table (e.g. before breaking), you need to place it. When holding the cue ball and standing on or near the table, green particles will indicate valid placement areas.
08_join_multiplayer_game_EN.mp4
After selecting a multiplayer mode in the game lobby, other online players will receive a broadcast invitation. When someone joins your queue, follow the prompt and click <Begin> to begin. The breaking player is randomly chosen.
09_shoot_ball_EN.mp4
Hold right-click to charge, and release to shoot. The cue ball's direction is based on your facing angle. Power depends on charge time; max power takes about 1.1 seconds. In 8 Ball and 9 Ball games, break shot speed is boosted by an adjustable proportion.
Aiming method: while holding the cue stick, sneaking lets you automatically face the cue ball. This makes your shot direction align with your forward view.
You can enable zoom-in while sneaking to help aim more precisely. This is not recommended on high-latency online games. Use:
/function app:settings/pool/aim/
10_cue_ball_control_EN.mp4
Besides power, you can apply spin to the cue ball. Before shooting, click <Adjust the next strike angles> to modify hit point and/or cue stick elevation. Or use:
/function pool:classes/cue/map
The adjustment UI shows hit point grid on the left, elevation on the right, and fine-tuning options below. Fine-tuning enables highly flexible choice of hit point. The GIF shows a slight-backspin example.
11_undo_shot_EN.mp4
If cheats are allowed, you can click </back> to restore the table to its state before the shot. You can only undo one step backward. The target ball is also preserved, and if you committed a foul by hitting the wrong ball, undoing it will also clear the foul.
You can enter Practice Mode via the Command Window. There are no rules in this mode. You have access to all balls and can freely place and shoot them anywhere on the table.
12_practice_mode_0_EN.mp4
Select empty table, all balls on the table will be cleared.
12_practice_mode_1_EN.mp4
Select line-up mode, the datapack will place balls along a straight line. You can choose whether to align them along the long edge or the short edge of the table, and specify how many balls to place.
This datapack uses simplified Newtonian physics to simulate the behavior of pool balls in Minecraft. It omits friction between pockets and balls, deformation, and other complexities in favor of performance and clarity.
Included mechanics:
- Conservation of momentum, angular momentum, and energy
- Modeling of cue stick elevation and cue ball hit point for spin generation
- Interaction with the pocket edge (but friction is not modeled)
The implementation is original and does not reference any published papers. For deeper insight, you may refer to introductory physics textbooks or search “billiard physics” online.
The numerical simulation of break physics consulted this link.
-
I cannot execute a shot.
Please stand on the ground, and keep standing or sneaking while releasing the mouse button. -
The balls do not seem to move correctly.
Please make sure you successfully installed Math Datapack (see instructions above), you should see messages from both datapacks after running areload. Increasingmaxcommandchainlength(new version:max_command_sequence_length) fromgamerulemay help in an uncommon situation where there are too many balls on a table. -
I cannot undo a shot.
Please allowcheatfrom the settings menu. Undoing a shot during a game is considered "cheating". -
Everything disappears after I run a
reload.
Please selectkeepongoingsessionfrom the settings menu. -
The datapack is running, but it does not look the same as the video you uploaded.
Please play with available settings, especially thevisuals. Note that different physics parameters also create sometimes significantly different results. -
My table is broken.
Please set up the table on a large and flat surface, and do not use any tools to "mine" on the table. -
I need to place the cue ball, but I don't have one in my inventory.
Please get a new one by running /function app:get/pool/cueball_helper -
I get unexpected problems.
Please try to reset the game, reset the table, or unload / reload the datapack. If problem persists, please submit an issue or contact me. It is preferred to submit an issue, share a recording of the problem / a saved world copy to make me easier to get a solution.
-
Ball sizes are intentionally enlarged to improve playability. While smaller balls would resemble real pool better, Minecraft's mouse sensitivity does not allow fine-grained aiming at that scale. Please understand this “disloyalty” to realism is meant to improve gameplay experience. Accordingly, players may feel that movement speed of the balls are too low compared to reality.
-
Do not redistribute this pack without credit. Although the physical concepts are basic, the implementation and modeling are original.
-
Rules of games are simplified to support popular and convenient gameplay. You may refer to:
-
The resourcepack includes a visual approximation of a 2005 snooker pocket dimensions. You can find it in the texture files.
This section shall be honored when in conflict with other documents.
Feel free to play around with this datapack.
As developer, feel free to use this datapack as a module to develop free datapacks.
But you must notify us and add the link to this github page!
More datapacks developed by us here
Watch our videos on youtube here
Watch our videos on bilibili here
Join our QQ group: 74681732
Subscribe on wechat: 鱿鱼MC工作室
