
Pool and Billiards
记得安装资源包!Remember to install the resource pack! One of the most advanced open-source pool and billiards games for Minecraft Java Edition, featuring realistic physics, snooker, eight-ball, nine-ball, multiplayer, and AI opponents.
- Загрузки
- 8K
- Подписчики
- 32
- Обновлён
- 21 августа 2026 г.
- Лицензия
- MPL-2.0
Опубликован 23 февраля 2026 г.
Pool and Billiards Datapack by YMS2001
It got a website for all info you need!
About
This datapack is designed for Minecraft players who enjoy cue sports.
Here, pool broadly refers to cue sports including Snooker, 8-Ball, 9-Ball, and related variants.
The datapack supports single-player, play-with-bot, and two-player gameplay in Minecraft Java Edition 1.16+. It also fully supports players without OP permission or in survival mode.
Supported game modes:
- Snooker
- UK 8-Ball
- Generic 8-Ball
- 9-Ball
- Rule-free practice mode
Dependencies
This datapack depends on the following components:
- Required — Pool and Billiards Resource Pack
Make sure all required components are installed and enabled before use.
Detailed README (GitHub)
中文版使用说明(GitHub)
Summary of Recent Changes
近期改动总结
Mod Version
Starting from v1.2.0, the datapack is also available as a mod version.
The mod version automatically loads the datapack, so you do not need to place it into each world’s datapacks folder manually. The regular datapack version is still fully supported.
Installation
1. Download the following for the correct game version
- Pool Datapack
- Pool and Billiards Resource Pack (Please check that the resourcepack has a matching minor version to ensure compatibility, i.e., v1.3.x datapack should use v1.3.x resourcepack)
2. Locate your Minecraft directory
On Windows this is usually:
C:/Users/YourUserName/AppData/Roaming/.minecraft
3. Install the resource pack
Move Pool Resource Pack into:
.minecraft/resourcepacks
4. Install the datapacks
Open the world folder where you want to install the datapacks:
.minecraft/saves/<your world>/datapacks
Move the file into this folder:
- Pool Datapack
Each world requires its own copy of the datapacks.
Alternative mod version, available since v1.2.0
You can download the mod version and place it into .minecraft/mods
The mod version automatically loads the datapack, so you do not need to place it into each world's datapacks folder every time.
5. Start Minecraft and open the world
6. Enable the resource pack
Esc -> Options -> Resource Packs
Move Pool Resource Pack to the enabled side.
7. Run the following command
/reload
8. Enjoy
Here are a few helpful commands.
- Open command window directly without clicking any buttons in chat.
/function app:help/pool/commandwindow
or/trigger swPool__trigger set 1if without permission - Run the loading function, in case you want to troubleshoot / check missing settings and don't want to run
reload.
/function pool:classes/main/load - Terminate a game without using command window.
/function pool:classes/lobby/terminate_helper - Remove a table without using command window.
/function pool:classes/table/clear
Included Mechanics
This datapack includes the following systems:
- Simplified Newtonian physics simulation for pool balls
- Neural network-based rack simulation during the break
- Simplified match setup and game rules
- Chat-based GUI for convenient interaction; most actions are done with the mouse
- Support for English and 简体中文
For performance and clarity, the simulation omits some real-world effects such as friction between pockets and balls, cushion deformation, and other minor physical complexities.
Additional Information
Full documentation, installation and usage guides, and source code are available here:
https://github.com/MingshiYangUIUC/Pool-Minecraft-Squid-Workshop-Project
Compatibility Note
For Minecraft versions before 1.21, you may need to edit pack.mcmeta to remove the compatibility warning.
The datapack content is mostly identical across supported versions, so adjusting this single file is usually easier than maintaining multiple nearly identical copies.
Please refer to the Pack Format documentation and update pack.mcmeta according to your Minecraft version:
Ченджлог
v1.3.5-mc1.21plus+modРелиз26.1.1, 26.1.2, 26.2 · 21 августа 2026 г.
v1.3.5
This update focuses on performance optimization and brings major improvements. IT RUNS MUCH MORE EFFICIENTLY!
For version-to-version comparison, an 8-ball break was tested in Minecraft 1.21.8 on a Ryzen 9 5900X processor in a clean singleplayer world, using a 6×10 table, default ball radius, 150% break power, 1 GB allocated RAM, PBO enabled, and no resource pack. Each version was tested five times, with load monitored over 10 seconds.
| Version | Peak MSPT Range | Mean MSPT Range |
|---|---|---|
| v1.0.0 | 38–39 | 09–10 |
| v1.1.0 | 37–38 | 09–10 |
| v1.2.0 | 51–56 | 10-10 |
| v1.3.1 | 39–44 | 06-06 |
| v1.3.2 | 33–38 | 06-06 |
| v1.3.3 | 28-28 | 06-06 |
| v1.3.4 | 23–25 | 05-05 |
| v1.3.5 | 08–11 | 03–04 |
Performance Improvements
- Heavily optimized math functions and physics-engine logic to reduce unnecessary calculations.
- Restricted player-ball-table interaction checks to players within 50 blocks of the table center.
- Added a directional check to the quick-sorting logic to discard ball pairs that are moving away from each other.
- Greatly reduces peak load in situations where many balls are close together.
- Normal shot processing can now run at as low as ~1 mspt.
- Bot simulation speed is significantly improved, reaching up to ~2× the previous speed.
- Recommended bot performance settings have been adjusted accordingly.
- To further reduce lag spikes, the number of simulation steps per tick is now adjusted dynamically based on the number of moving balls on the table during simulation.
- The setting controls the maximum value, which corresponds to the steps per tick when one ball is moving. During simulation, this value is internally reduced when more balls are moving, such as being halved when two balls are moving.
- Changed to lightweight item detection for various held items in Minecraft 1.20.5 and later.
Mechanism Changes
- Stopped balls no longer receive physics updates every tick.
- Previously, all stopped balls were still processed each tick. This allowed force to propagate through tightly packed balls within the same tick after an active ball collided with them.
- Now, a stopped ball begins receiving physics updates only after it is affected by a collision. As a result, force propagation through packed balls is more likely to take multiple ticks instead of occurring within a couple of ticks.
- This change substantially reduces the processing cost of normal shots and also contributes significantly to faster bot simulations.
- The practical impact is limited:
- Normal tightly packed situations (i.e., break shots) can be handled by the NN break system, which is unaffected by this change.
- In ordinary gameplay, the visual difference is very small.
Fixes
- Fixed an issue in UK 8-Ball where foul feedback could unintentionally appear after the break shot without any foul.
- Fixed an issue in practice mode where only one player is given cue ball.
v1.3.5-mc1.16_1.20+modРелиз1.20.4, 1.20.5, 1.20.6 · 21 августа 2026 г.
Please see v1.3.5-mc1.21plus!
v1.3.5-mc1.21plusРелиз26.1.1, 26.1.2, 26.2 · 21 августа 2026 г.
v1.3.5
This update focuses on performance optimization and brings major improvements. IT RUNS MUCH MORE EFFICIENTLY!
For version-to-version comparison, an 8-ball break was tested in Minecraft 1.21.8 on a Ryzen 9 5900X processor in a clean singleplayer world, using a 6×10 table, default ball radius, 150% break power, 1 GB allocated RAM, PBO enabled, and no resource pack. Each version was tested five times, with load monitored over 10 seconds.
| Version | Peak MSPT Range | Mean MSPT Range |
|---|---|---|
| v1.0.0 | 38–39 | 09–10 |
| v1.1.0 | 37–38 | 09–10 |
| v1.2.0 | 51–56 | 10-10 |
| v1.3.1 | 39–44 | 06-06 |
| v1.3.2 | 33–38 | 06-06 |
| v1.3.3 | 28-28 | 06-06 |
| v1.3.4 | 23–25 | 05-05 |
| v1.3.5 | 08–11 | 03–04 |
Performance Improvements
- Heavily optimized math functions and physics-engine logic to reduce unnecessary calculations.
- Restricted player-ball-table interaction checks to players within 50 blocks of the table center.
- Added a directional check to the quick-sorting logic to discard ball pairs that are moving away from each other.
- Greatly reduces peak load in situations where many balls are close together.
- Normal shot processing can now run at as low as ~1 mspt.
- Bot simulation speed is significantly improved, reaching up to ~2× the previous speed.
- Recommended bot performance settings have been adjusted accordingly.
- To further reduce lag spikes, the number of simulation steps per tick is now adjusted dynamically based on the number of moving balls on the table during simulation.
- The setting controls the maximum value, which corresponds to the steps per tick when one ball is moving. During simulation, this value is internally reduced when more balls are moving, such as being halved when two balls are moving.
- Changed to lightweight item detection for various held items in Minecraft 1.20.5 and later.
Mechanism Changes
- Stopped balls no longer receive physics updates every tick.
- Previously, all stopped balls were still processed each tick. This allowed force to propagate through tightly packed balls within the same tick after an active ball collided with them.
- Now, a stopped ball begins receiving physics updates only after it is affected by a collision. As a result, force propagation through packed balls is more likely to take multiple ticks instead of occurring within a couple of ticks.
- This change substantially reduces the processing cost of normal shots and also contributes significantly to faster bot simulations.
- The practical impact is limited:
- Normal tightly packed situations (i.e., break shots) can be handled by the NN break system, which is unaffected by this change.
- In ordinary gameplay, the visual difference is very small.
Fixes
- Fixed an issue in UK 8-Ball where foul feedback could unintentionally appear after the break shot without any foul.
- Fixed an issue in practice mode where only one player is given cue ball.
v1.3.5-mc1.16_1.20Релиз1.20.4, 1.20.5, 1.20.6 · 21 августа 2026 г.
Please see v1.3.5-mc1.21plus!
v1.3.4-mc1.21plus+modРелиз26.1.1, 26.1.2, 26.2 · 8 августа 2026 г.
1.3.4
This update focuses on a "distributed" bot thinking strategy, free ball rule for Snooker, and additional performance optimization and fixes.
Improvements
Assigned fixed UUIDs to helper entities and the pool-table marker to make entity selection slightly faster.
Helper entities
rhp1–rhp3:UUID:[I;797665,435737,0,4-6] # swPool, helper, 0, #4-#6 000c2be1-0006-a619-0000-00000000000[4-6]Pool-table marker:
UUID:[I;797665,82253,0,0] # swPool, table, 0, 0 000c2be1-0001-414d-0000-000000000000Reduced the frequency of
OnGroundNBT checks to once every 4 ticks.Reduced entity position reads after movement by accumulating position from the previously stored position and movement speed instead. Full position reads are now performed once every 10 ticks.
For Minecraft 1.21+, reduced unnecessary calculations during spin rendering by normalizing quaternions less frequently, now once every 10 ticks.
These optimizations reduced active-gameplay MSPT by up to approximately 17% compared with v1.3.3 in a testing scenario outlined in README.
Changes / Additions
Dynamic pool-table scaling now supports ball radii above
1250, up to1500. Please use multiples of 250 for best results.If the ball-spinning feature is turned off, balls will no longer spin during the pocketing animation.
The bot can now distribute its thinking time across multiple ticks. This helps prevent short lag spikes, and the maximum number of simulation steps per tick can be configured based on the processing power of the client or server.
Fixed static ball-rendering issues when the bot is thinking.
Added a slight penalty for shots that are too straight, as they often make positioning for the next shot harder.
Added an [experimental] Snooker free ball mechanism
- After a foul, the datapack can detect whether the incoming player is snookered and award a free ball when applicable.
- The first ball hit is treated as the nominated free ball.
- If the nominated free ball is potted, it scores the same value as the original ball on.
- A free ball is not awarded when the incoming player already has ball in hand in the D-Zone.
Revised Chinese language terminology: ball in hand (cue ball replacement) is now referred to as 手中球 in all games, while a Snooker free ball is referred to as 自由球.
Shortened the name of release zip files and included version number.
Fixes
- Fixed a 9-ball rule issue where potting a lower-numbered ball after illegally hitting the next higher-numbered ball first was not correctly identified as a foul.
- Fixed a bug where players sometimes could not shoot when pressing Shift.
v1.3.4-mc1.16_1.20+modРелиз1.20.4, 1.20.5, 1.20.6 · 8 августа 2026 г.
Please see the update log for mc1.21plus
v1.3.4-mc1.21plusРелиз26.1.1, 26.1.2, 26.2 · 8 августа 2026 г.
1.3.4
This update focuses on a "distributed" bot thinking strategy, free ball rule for Snooker, and additional performance optimization and fixes.
Improvements
Assigned fixed UUIDs to helper entities and the pool-table marker to make entity selection slightly faster.
Helper entities
rhp1–rhp3:UUID:[I;797665,435737,0,4-6] # swPool, helper, 0, #4-#6 000c2be1-0006-a619-0000-00000000000[4-6]Pool-table marker:
UUID:[I;797665,82253,0,0] # swPool, table, 0, 0 000c2be1-0001-414d-0000-000000000000Reduced the frequency of
OnGroundNBT checks to once every 4 ticks.Reduced entity position reads after movement by accumulating position from the previously stored position and movement speed instead. Full position reads are now performed once every 10 ticks.
For Minecraft 1.21+, reduced unnecessary calculations during spin rendering by normalizing quaternions less frequently, now once every 10 ticks.
These optimizations reduced active-gameplay MSPT by up to approximately 17% compared with v1.3.3 in a testing scenario outlined in README.
Changes / Additions
Dynamic pool-table scaling now supports ball radii above
1250, up to1500. Please use multiples of 250 for best results.If the ball-spinning feature is turned off, balls will no longer spin during the pocketing animation.
The bot can now distribute its thinking time across multiple ticks. This helps prevent short lag spikes, and the maximum number of simulation steps per tick can be configured based on the processing power of the client or server.
Fixed static ball-rendering issues when the bot is thinking.
Added a slight penalty for shots that are too straight, as they often make positioning for the next shot harder.
Added an [experimental] Snooker free ball mechanism
- After a foul, the datapack can detect whether the incoming player is snookered and award a free ball when applicable.
- The first ball hit is treated as the nominated free ball.
- If the nominated free ball is potted, it scores the same value as the original ball on.
- A free ball is not awarded when the incoming player already has ball in hand in the D-Zone.
Revised Chinese language terminology: ball in hand (cue ball replacement) is now referred to as 手中球 in all games, while a Snooker free ball is referred to as 自由球.
Shortened the name of release zip files and included version number.
Fixes
- Fixed a 9-ball rule issue where potting a lower-numbered ball after illegally hitting the next higher-numbered ball first was not correctly identified as a foul.
- Fixed a bug where players sometimes could not shoot when pressing Shift.
v1.3.4-mc1.16_1.20Релиз1.20.4, 1.20.5, 1.20.6 · 8 августа 2026 г.
Please see the update log for mc1.21plus
Комментарии
Загружаем…