Skip to content

MingshiYangUIUC/Pool-Minecraft-Squid-Workshop-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

324 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Squid Workshop's Pool Datapack

Content creator: Mingshi Yang (YMS2001). Contact: mingshi3@illinois.edu

_MingshiYangUIUC_

Play pool in Minecraft, like in real life!


Abstract

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.


Installation

  • 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 /reload command then press enter.
  • Step 09 Recommended: Type /gamerule command to set the maxCommandChainLength or max_command_sequence_length to 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.

Compatibility Notice

  • 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.21 and resourcepack Pool-ResourcepackFolder-Squid-Workshop-1.21 are now provided and intended to work for all 1.21 versions. The Releases_1.21 folder 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.


User Guide and Demo

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.

1. Initialize the Datapack

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.

2. Load the Resourcepack

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.

3. Access Settings and Help

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.

4. Get the Cue Stick

04_get_cuestick_EN.mp4

Use the Command Window to get a cue stick (function as a bow when no game is active).

5. Set Up the Table

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.

6. Open the Game Lobby

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).

7. Start a Singleplayer Game

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.

8. Start a Multiplayer Game

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.

9. Shoot a Ball

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

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 the Last Shot

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.

12. Practice Mode

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.


How It Works

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.


Frequently Asked Questions

  1. I cannot execute a shot.
    Please stand on the ground, and keep standing or sneaking while releasing the mouse button.

  2. 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 a reload. Increasing maxcommandchainlength (new version: max_command_sequence_length) from gamerule may help in an uncommon situation where there are too many balls on a table.

  3. I cannot undo a shot.
    Please allow cheat from the settings menu. Undoing a shot during a game is considered "cheating".

  4. Everything disappears after I run a reload.
    Please select keepongoingsession from the settings menu.

  5. The datapack is running, but it does not look the same as the video you uploaded.
    Please play with available settings, especially the visuals. Note that different physics parameters also create sometimes significantly different results.

  6. 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.

  7. 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

  8. 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.


Notes

  1. 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.

  2. Do not redistribute this pack without credit. Although the physical concepts are basic, the implementation and modeling are original.

  3. Rules of games are simplified to support popular and convenient gameplay. You may refer to:

  4. The resourcepack includes a visual approximation of a 2005 snooker pocket dimensions. You can find it in the texture files.


Terms of Use

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!

License

Mozilla Public License 2.0


More About Squid Workshop

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工作室

Packages

 
 
 

Contributors