Andrew's Datapack Utils

Mod

Useful utilities for datapacks, such as a calculator and allowing player data modification, and more.

Server Game MechanicsLibraryManagementUtility

787 downloads
2 followers
Follow Save

Notices:

The NeoForge version is not a priority and won't receive updates until I feel like updating it or someone does it for me (If you're interested in helping visit the Github page, I will accept any Pull Requests). This is because it is difficult to maintain versions for 2 separate loaders at once, Fabric is just easier to code with, and working on the NeoForge version takes a little extra time that I might not have.

About

Andrew's Datapack Utils is a Fabric/NeoForge Mod aimed at creating useful utilities for datapacks (mainly for datapack functions). It adds a command which holds most of the utilities, and allows modification of player data using /data and /execute store, allowing for easy manipulation of players and allows for things that were previously impossible.

Features

  • Basic Math Calculation
    • used by using the /aputils calc <add|sub|mul|div|power|sqrt> command. Works great with /execute store result and function macroes.
  • Distance Calculation
    • /aputils calc distance <pos 1> <pos 2> or /aputils calc distance entities <selector1> <selector2>
    • Can calculate distance between 2 entities or 2 blocks, for entities use /aputils calc distance entities, for blocks use /aputils calc distance (notice the lack of entities)
  • Editing Player Data
    • Normally, you can't use /data or /execute store (result|success) entity to change player entity data, it just throws an error, Unable to modify player data, and doesn't change anything. With this mod, that restriction is removed, allowing for easy modification of player entity data. Note that not everything can be modified, attempting to change certain values such as Motion or Pos does nothing. Use other commands such as /aputils velocity or /tp to change these instead.
  • /aputils velocity <xyz> [add|set|multiply]
    • allows you to manipulate the velocity of entities in ways you can't with normal methods, such as modifying the velocity of players (you can't with a player data modification mod because it doesn't send the velocity update packet to the client)
    • requires permission level 2, meaning you nead cheats in a single player world or permission level 2 in a server
  • /aputils attack_cooldown <player>
    • Outputs the attack cooldown progress of the provided player, as a percent if using /execute store result.
  • /aputils despawn <entities> [force]
    • Despawns one or more entities. Not the same as /kill, as this simply removes the entity/entities from your world without triggering any sort of death event, just silently removing the entity in the same manner as an entity despawning normally.
    • If force isn't applied and the target selecter includes one or more players at the time of the command being run (not if the selector allows players), the command fails.
    • Requires permission level 2, or permission level 4 if force is included
  • /aputils check_damage <entity> [type]
    • Returns true if the entity took damage on the tick the command was run, and type isn't provided
    • Returns true if the entity took damage of the provided type on that tick, if type is provided.
    • Doesn't work on older game versions, oldest tested and working version is 1.21.2
      • This command always returns 0 if the required mixin doesn't load
  • /aputils pathfind <entity: selector> <xyz: Vec3d> [speed: double] or /aputils pathfind <entity: selector> entity <target: selector> [speed: double]
    • Makes a mob navigate to a certain position using vanilla mob pathfinding.
    • Overrides the mob's current path, if any.
    • Has an optional 'speed' parameter that makes the mob move at this speed while travelling to the specified position. Note that for some mobs such as iron golems their default (1) speed is their running speed. This isn't the case for every mob, but it is for some.
    • If unspecified, defaults to 1.
    • If the target specified is an entity, the mob will navigate to where the entity was when the command was run.
    • Does not affect dolphins, but does affect other fish. Why this is I do not currently know, but the dolphin likely uses a different navigation method than other mobs.
    • Currently does not produce command feedback, but it does work.
    • Mobs sometimes stop navigating to the position early. This is due to normal mob AI behavior.
  • /aputils target <entity> <target>
    • Forces a mob to change their target to the specified entity.
    • Conditions such as distance, gamemode, or having an existing target/attacker are ignored.
    • Only applies to mobs that can have a target, so passive mobs cannot be affected.
    • Does not affect to the ender dragon due to the ender dragon not being a mob with normal behavior.
    • Currently does not produce command feedback, but it does work. Datapacks can detect if this mod is installed using /aputils heartbeat, which always outputs 1 to /execute store result. Datapacks can detect if the NeoForge or Fabric version of the mod is being used with /aputils version. Returns 1 if NeoForge is being used and 0 if Fabric is being used.

Known Issues

  • Every time /aputils velocity is run, it prints "The new velocity is (x, y, z)" to the server console/game logs which can be annoying
    • This was a debugging feature that was left on accidentally and will be disabled next update.

Notes

This can be included in any modpack without my permission.

If you want to port this to Forge, go ahead.

To Developers

Any contributions would be greatly appreciated!

Fun Facts

This is the first actual mod I've made in my entire history of Minecraft development. Before this I've only ever made datapacks for minecraft.


Project members

AndrewGaming587

Member

Details

Licensed CC-BY-4.0
Published 4 months ago
Updated 23 days ago