• • 12/17/25 7:45 am • 31 logs
- 18.2k views • 2 today
- save_alt 1.2k downloads • 1 today
- Compatibility
- Minecraft 26.2
- Changes include
- Advancements
- Functions
- Predicates
Added CreditInspiration from Zeta / Lambda Players
3
[ Glacier Players: Pure Vanilla and Optimized! ]
Glacier Players are Mannequins designed to mimic real player behaviour in a typical survival server, optimized to have a dozen of glaciers active at all times.
Features
- Most of the player behaviour replicated.
- Connecting and disconnecting.
- Death and respawning alongside being able to use totems.
- Ability to emulate hunger, armour, inventory, experience and the locator bar.
- Send messages in chat with additional features like polls.
- Chat Filters
- Load chunks and receive knockback.
- Ability to place blocks semi-accurately.
- Support for skins and gamemodes (Survival, Creative and Adventure)
- Toolsets to change glacier behaviour and settings.
- Extension Support.
- More info on Extensions at the Glacier Players Extension Wiki
Accuracy
| Feature | Status | Overview |
|---|---|---|
| Connection | +100% | Connecting and disconnecting. |
| Chatting | +100% | Chat messages + Extras. |
| Death | 80% | Death and respawning. Totems included |
| Hunger | 99% | Hunger system with exhaustion, saturation, eating and difficutly changes. |
| Inventory | 99% | Inventory system with how items are handled. Used by Hunger and Placing. |
| Mob Recognition | 0% | Be able to get recognized by mobs. |
| Combat | 0% | Ability to fight other mobs and glaciers. |
| Breaking and Tools | 1% | Ability to break blocks and use tools. |
| Placing | 50% | How placing blocks are handled. Blocks more than 1x1x1 are unstable. Some data that determines how the block is rotated may not be supported. |
| Gamemode Emulation | 50% | Survival, Creative and Adventure. |
Credits
Inspirations
- Lambda Players | The main inspiration.
Contribution Guidelines
- Optimization and Efficiency
- Modular
- Player Accuracy

Links: GitHub - Source Code Discord [13+] Extensions Wiki Trello
License: MIT
[ Experimental Mob AI: More Capable and Performant! ]
EXPMAI or formerly EXPAI. originally created Glacier Players which was split into its own project. EXPAI changes behaviour of certain mobs.Modrinth
GitHub
Planet Minecraft
Release List
| Release | Version | Summary |
|---|---|---|
| 11 - 17b | 24w21a - 1.21.1 | Hunger, Armour, Totems, New Configurations, UUID Cache, Absorption, Toolkits, Panic lines, Stability changes. Tons of fixes. Split between EXPAI and Glacier Players. |
| 18 - 19 | 24w39a - 1.21.4 | Building, Set Spawnpoints, Visual Storage rework, Optimizations and Cast changes. |
| 20 | 25w09a - 1.21.5 | Additional Configurations and Optimizations. |
| 21 - 23 | 1.21.5 - 25w23a | Sprays, System reworks and minor changes. |
| 24 | 1.21.11 | Mannequin Overhaul and heavy system reworks. |
31 Update Logs
Release 24 : by I_Cement 12/17/2025 7:45:02 amDecember 17, 2025 @ 12:45 pm UTC
Commit Logs: R23..R24 | Release 24 - 1.21.11 | Get on GitHub! | Mobberode Discord Server
Mannequin Overhaul
- Overhauled how Glacier Players work by using Mannequins has multiple advantages over Piglin Brutes and Armour Stands.
- Glaciers no longer get targeted due to Piglin Brutes being replaced by mannequins.
- Glacier Players now works properly on Peaceful difficulty.
- Players will no longer be prompted to change difficulty or disable Glacier Players when the difficulty is Peaceful.
- Glaciers now receive fall damage.
- Glaciers interact to being fishing rodded.
- Armour Stands replaced with Markers.
- Mannequins now take several use cases of the Armour Stand
- The Marker serves as the root of the Glacier, handling all the internals like data and scores.
- Glaciers now have support for skins.
- Skins are based on the Glacier's name that is combined into 1 string of text
- Glaciers can have multiple poses. (example: Swimming uses the Swimming pose)
- The following poses are used.
- standing Default pose.
- swimming Swimming pose for when a Glacier sprints in water.
- Hitbox sizes change depending on the pose.
- The following poses are used.
Additions
Dahesor's NBT Transformer
- Glacier Players now has DNT packaged. Replaces StringLib.
Building
Tags
- Added block tag glacier_players:conditions/farming/general
- Blocks in this tag are suitable for crop placement.
Block Side Availability
- BSA controls what sides of the block allow placement.
- N, E, S, W, Up and Down allow block placing by default. and values are contained inside of the glacier_players.number objective:
- #Block.Border.Side.N.Available North
- #Block.Border.Side.E.Available East
- #Block.Border.Side.S.Available South
- #Block.Border.Side.W.Available West
- #Block.Border.Side.Up.Available Up
- #Block.Border.Side.Down.Available Down
- N, E, S, W, Up and Down allow block placing by default. and values are contained inside of the glacier_players.number objective:
Special Conditions
- Special Conditions allow for more specific placements of blocks by checks, requirements and other means for placement validity.
- The format of Special Conditions is a list; glacier_players:build_macro special_conditions that will get the function value.
- An example of Special Conditions is: ["namespace:function","other_namespace:other_function","#namespace:function_tag"]
- The format of Special Conditions is a list; glacier_players:build_macro special_conditions that will get the function value.
General
- #Block.Fail glacier_players.condition is used to determine if the process is to be finalized. Other functions can change this.
- fire and soul_fire are both considered non-solids.
Farming
- Glacier Players can now plant crops.
- Crops are planted by holding items that are registered in the glacier_players:blocks/place_types/crops item tag.
Health
- Support for the max_health attribute.
- Glaciers can now regenerate up to max health instead of being locked to 10 (20) hearts.
- The Debug Stats has been tweaked to show the max health.
Speech
- Added score: glacier_players.speech_rarity which controls the rarity of speech actions.
- Default value: 1500 | 1 in 1500 chance to speak per tick.
- ..0 = Stop, 1 = Always, 2.. = Random.
- Default value: 1500 | 1 in 1500 chance to speak per tick.
Hunger
- Added new storage; glacier_players:hunger
- Consumption sound can be overridden when applying data from a consumable item.
- glacier_players:hunger is the storage that holds consume_sound which points to a sound.
- entity.generic.eat is the default value.
- glacier_players:hunger is the storage that holds consume_sound which points to a sound.
- The Saturation effect is now supported.
Difficulty Support
- Hunger now behave differently based on the world difficulty.
- Peaceful: Starvation damage is paused. Nutrition and Saturation regenerate overtime. Health also slowly regenerates.
- Easy: Glacier health drops to 5 (10) Hearts.
- Normal: Glacier health drops to 0.5 (1) Hearts.
- Hard: Starvation damage will continue until death or consumption.
The Copper Age drop
Tags
- Glacier Players can now use the new copper blocks such as Copper Torches and the Copper Golem Statues.
- Shelfs are now placable.
- the block; chain is now iron_chain
Dialog
- Credits
Toolkit
Permissions
- Added Toolset Permissions
- If the lock status hasn't been setup. The first player will get to lock/unlock the Toolset.
- Unlocking will make the Toolset behave the same from old releases (Players will get the Toolset on reload)
- Locking will give the player permission and only the Toolset is given to players with permission. Players without permission that try to use the Toolset will be restricted.
- Players that have the tag: glacier_players.toolset_wielder will be able to get and use Toolsets.
- If the Toolset is already locked. Operators will have to give themselves or other players permission via /tag
- If the lock status hasn't been setup. The first player will get to lock/unlock the Toolset.
Configs
- Added new config: Path Method This controls what method that Glaciers use to make paths.
- There are 2 methods.
- Mode 0 is Simple
- Mode 1 is Intermediate Simple
- Default value is 1
- There are 2 methods.
- Added new section: Systems This will be store any future configs related to the internals.
General
- Added retained_data which retains important data.
- This is located inside of gp_action
- Added the refresh function function glacier_players:technical/tools/refresh
- This is used to refresh the current toolset for any changes especially for configs.
- Added scoreboard trigger: glacier_players.get_toolset
- Triggering will wipe the all Toolset items and give the starting tools.
- Tools will not be given and a message is sent if locked.
- Triggering will wipe the all Toolset items and give the starting tools.
- Added scoreboard trigger: glacier_players.disable_toolset
- If value is equal or over 1 then the player wont be able to get and use tools.
- If value is equal or under 0 then the player will be able to get and use tools.
Glacier Rules
- Added Glacier Rules which determine how systems are handled.
- glacier_players.rule.stop_exhaustion - If exhaustion should not be changed.
- glacier_players.rule.infinite_items - If Items should not be consumed by an action.
- glacier_players.rule.can_build - If building is available.
- glacier_players.rule.ignore_hunger_limitations - If doing actions that require hunger such as sprinting or lunging have their limitations ignored.
- glacier_players.rule.can_starve - If starvation damage should be taken.
- glacier_players.rule.invulnerable - If all damage sources should be ignored.
Gamemode Emulation
- Glaciers can now emulate several gamemodes.
- Survival, Creative and Adventure mode are supported.
- **Survival **| Default gamemode.
- **Creative **| Infinite items, hunger limitations ignored, invulnerability, no starvation damage and exhaustion is not added.
- **Adventure **| Survival but with disabled building.
- Glacier gamemodes can be changed using: /function glacier_players:technical/gamemode/change {gamemode:<mode>}
- The values survival, creative and adventure are accepted.
- Survival, Creative and Adventure mode are supported.
World Spawnpoint Marker
- The position of the world spawnpoint is saved.
- The position gets saved to glacier_players:macro worldspawn every 10 seconds.
Tags
Function
- glacier_players:extensions/behaviour/player/apply_waypoint
- glacier_players:extensions/tool_types
Misc
- Added glacier_players:empty loot_table.
- Added glacier_players:toolset_retain item modifier.
- Added pack.png
Changes
Glacier Data and UUIDs
- Data and UUIDs are now merged into one storage; glacier_players:macro instances
- glacier_players:macro instance refers to a specific instance that holds its own data and UUIDs.
- The following actions can be done with the function prefix; glacier_players:technical/data/
- empty/all overrides the instance with {}
- empty/data clears data.
- empty/uuids clears UUIDs.
- create appends instance into instances
- Requires input of instance_id
- delete deletes the specified instance
- Requires input of instance_id
- mark_edit sets instance from the most recent entry in active_instances
- push apply changes to specified instance in instances and marks as inactive.
- Requires input of instance_id
- update pushes in-edit instance.
- upload appends specified instance from instances to active_instances
- Requires input of num
Inventory
- Changed inventory modes to refer to the specified function.
- Inventory modes are now run with the following function: glacier_players:player/inventory/item/internal/start {mode:""}
- mode is a string that points to a specified function.
- Inventory modes are now run with the following function: glacier_players:player/inventory/item/internal/start {mode:""}
- Items now drop from the eye anchor instead of a hardcoded position.
Toolkit
Extensions
- glacier_players:extensions ext_namespace now only accepts string.
- The new format is now ["ns:func","ns2:func"]
- The old format was [{toolset_function:"ns:func"}]
- The new format is now ["ns:func","ns2:func"]
Configs/Behaviours
- Moved the following "Systems" config into the **Systems **toolset:
- Toggle Experience.
- Toggle Inventory.
- Toggle Hunger.
- Toggle Locator Bar.
General
- gp_remove_hotbar is now keep_hotbar
- Action Type back has been changed to change
- gp_action in the custom data has been changed to be a proper structure in curly brackets {}
- Type has been retained, the type value will be taken from the type data.
- keep_hotbar has also moved into gp_action
- gp_return_function and gp_event_function have been merged into function which is located inside of gp_action
- The new format is now: {gp_action:{type:event,function:"namespace:event_function",keep_hotbar:true}}
- The old format was {gp_action:"event",gp_event_function:"namespace:event_function",gp_remove_hotbar:false}
- Movement speed when using toolkit items is now retained.
Hunger
- Special tags on consumption no longer requires tags.
- Special Tags is a list of strings that point to function(s) in storage; glacier_players:hunger consume_run which is processed upon consumption.
- An example of a Special Tags list is provided: ["ns:func","ns2:func"]
- Special Tags is a list of strings that point to function(s) in storage; glacier_players:hunger consume_run which is processed upon consumption.
- GlacierPlayer.Inv_Food_ReplaceItem tag replaced by #ReplaceItem glacier_players.condition score.
- The max Saturation is now based on the current Nutrition value.
- Nutrition and Saturation now have a tenth decimal place.
- All food items with decimal places in nutrition and saturation values have been adjusted.
- Scoreboards represent the number as integer (20.0 -> 200) NOTE: The inventory and hunger changes are to make the processes more streamlined.
Building
- Various data like sound_namespace, block, pos and rot has been merged. This is located inside of glacier_players:build_macro sequence_tmep
- sound_namespace is now sound
- block remains unchanged.
- pos is now position
- rot is now data
- data contains the properties of the block.
- type.rotation is now rotation_type as a string that points to a function.
- Custom rotation types are now supported by this change.
- Improved obstruction detection that supports scaling when placing down blocks.
Breaking
- Improved functionality.
Hitbox
- Glacier Hitbox is now as accurate as the player hitbox.
Respawning
- angle is now renamed to pitch which is based on vertical rotation.
- Added yaw which is based on horizontal rotation.
Dialog
- Glacier Players is now a part of the pause menu.
- This only include links for the Discord, Planet Minecraft, GitHub and Trello.
Sprays
- Value for #MaxSprays glacier_players.config raised from 128 to 256.
Speech
- Behaviour of starting a speech action has changed to have a adjustable speech rarity score which controls how common speech actions should be.
Movement
- Sprint jumping is now way more accurate, jumping straight to the marker instead of turning to face the marker.
Pathing
- Glaciers using Intermediate Simple pathing will avoid markers that are in the air.
General
- Updated Pack Format to support new versions.
- Visuals of the debug stats has been touched up to replace text with sprites which includes info on hover to clarify what the numbers represent.
Optimizations
- Optimizations for @e and @n selectors.
- More selector usages have been removed.
- Several selectors now have x=0 included to limit the dimension.
- Most cases of summons now optimized using summon subcommand in execute
- Starving no longer uses UUID as its now ran by the Mannequin.
- Reduced amount of copy pastes for a smaller file size.
- Replaced player NBT check with item check for Toolkit.
- Optimized inventory when merging items with less commands.
- Optimized removing items upon consumption of food items with UUIDs.
- Removed unneeded execute uses for swimming.
- Regenerating health is now ran by the mannequin, removing the need for macros.
- Simplified score operations when running hunger effects.
- Heavily reduced command count when randomizing dmarker position.
- Updating item stack after placing a block now only occur if the amount of blocks is over 1.
- Micro optimization for handling voice messages.
- Replaced a player data check with a block data check for getting the tool_data
Fixes
Building
- Fixed facing type having wrong rotations.
- Fixed rotation which was not working.
- Blocks that have no rotation values now replace overridable blocks.
- Corrected inverting the facing rotation type.
General
- Glaciers no longer get targeted by Iron Golems.
- Incorrect movements when over multiple dimensions no longer happen.
- Spawnpoints when respawning is now at world spawn instead of the death location.
- Duplicate entities when respawning no longer occur.
- Glaciers no longer clip through blocks when damaged.
- This was an issue due to how knockback was handled pre-mannequin.
- The Hunger effect now defaults to level 1 if the amplifier given was 0
- Fixed clearing the sprays cache not killing all spray entities.
- Fixed experience not dropping if value was under 100
- action advancement now revoked every tick
Removed
- glacier_players:uuids and glacier_players:glacier_data merged into glacier_players:macro instances
- The following UUIDs now obsolete:
- 0000003d-0000-0017-0000-0025000adef5 cmarker.
- 0000003d-0000-0017-0000-0025000adef2 hmarker.
- 0000003d-0000-0017-0000-0025000adef4 pmarker.
- 0000003d-0000-0017-0000-0025000adef3 mmarker.
- 0000003d-0000-0017-0000-0025000adef bmarker.
- Removed Airtime from Experimental settings.
- Removed Datafixer due to massive changes for little benefit.
- Stringlib removed.
- HeightBoxLib removed.
- 32_second_period predicate removed.
Removed Function Tags
- extensions/inventory/modes
- extensions/inventory/food_properties
Removed Tags
- GP.Inventory_Selected.InvSection and related.
- GlacierPlayer.Inv_Food_ReplaceItem
- GlacierPlayer.Spray.Init
- GlacierPlayer.Set_ReScoreID
- glacier_players.processed_id
- GlacierPlayer.Inventory_SelectedFood
- GP.Used_Place
- All related consumption tags removed.
Removed Storage data
- glacier_players:abnormal_macro Merged into temp
- glacier_players:temp_uuids Replaced by glacier_players:temp
- glacier_players:pos_macro Merged into temp
- glacier_Players:marker_macro Merged into temp
- glacier_Players:motion Merged into temp
- glacier_players:toolkit Merged into extensions
- glacier_players:experience_macro Merged into temp
- current_plr_ext_toolset from glacier_players:extensions removed.
Template
- toolset_function removed. See Toolkit changes for more.
Removed Scores
- glacier_players.inventory_saved_partition
- glacier_players.speech_advanced_mode
- glacier_players.previous_absorption
- Following score objectives for respawn positions removed:
- glacier_players.x_respawn_pos
- glacier_players.y_respawn_pos
- glacier_players.z_respawn_pos
- glacier_players.communication_type
- glacier_players.previous_health
- glacier_players.inventory_slot_slot
- glacier_players.inventory_slot_comparing_slot
- glacier_players.inventory_slot_comparing_count
- glacier_players.delay_totem_replace
- glacier_players.speech_type
Known Issues
- facing cannot have multiple at the same time. More obvious when trying to place a furnace on top of a block.
LOAD MORE LOGS
More like this
6233832
119



Have something to say?
I do want them to be able to craft things, it’s always been one of those things I wanted to get done ages ago but it’s not easy. Making sure the systems like inventory, hunger and the placing system are great has been a massive pain to work on. Crafting would probably be something minor that I’ll leave for later cause it would need a lot of work. Yeah I can make it simple like you said but that wouldn’t really be up to my standards.
its quite hard to try to bridge the gap between real and glacier players because of limitations like having to be purely vanilla. Some stuff unfortunately can’t ever be replicated like making them show up in the player list or making them be selectable through the player selectors.
I at some point want to make glaciers use A* pathfinding the same method that mobs use in general and that might be in a seperate branch.
I have also been dealing with the absolute nightmare that is my chunks of horrible coding from over 6 months ago which I have been optimizing and improving.
Plus with me woking on multiple projects. Some things may take way longer than expected.
Few other aspects of this dp i think could be nice to be configurable is how often they build vs mine stuff, when they do so (so they could mine or build multiple blocks one after another), how far is the average distance to thier next location beeing tied to the resources they have (if they manage to make plenty of farms they would stay in the same general area, if they run out of tools they run around more hoping to run into a tree ofc that would need crafting from what you said before they cant craft the tools even if they get resources).
Only bugs i saw where with messages they send placeholder variable names as messages pretty often. On join i lost my hotbar as it got replaced with the candles, and I also saw some level up messages do they perhaps gain items from those level ups?
You will be given the toolset to play around with the glaciers. The second item is the config where you can go to the connections hotbar via the blue candle which you can configure if players can automatically connect and disconnect with a max connected limit that you can change. You can disable polls in the config toolset with the chat settings.
They can plant crops if they have the items and if they get lucky with their placements, but they can't harvest.
Being able to configure how often an action is done will be in the next release as some of this functionality is already included with chatting.
Making them stay around a general area could be included. I want glaciers that are nomads those that have bases.
The bugs you mentioned aren't bugs. The Extensions Template includes those placeholder messages so other people can create their own messages. Having the hotbar be replaced by the candles is intentional but can be changed to only affect the first 3 slots.
The level up messages are just visual for a glacier gained enough XP to level up. Theres no gain from these level ups.
If the rest is for EXPMAI then:
- Mob climbing on top of each other seems good as an idea but I'm not sure how that will play out.
- Seeing through walls even though they have no knowledge that a player is potentially there is straight up unfair and unfun. It being linked to how much noise the player makes would be better, but with the current code I have. I would have to change things up.
If for Glacier Players: