SkillAgentSearch skills...

BanHammer

Simple punishment utility for Fabric

Install / Use

/learn @Patbox/BanHammer
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

BanHammer

Simple, customisable punishment utility mod for Fabric. Allows moderators to permanently/temporary ban, mute or kick players. Supports Fabric Permissions API used by LuckPerms and PlayerRoles.

Every user facing message is configurable with support of advanced formatting

It has build in support for SQLite and MySQL databases.

Commands and permissions

| Command | Permission | Description | |------------------------------------------------|------------------------------------------|--------------------------------------------------------------------------------------| | /banhammer | banhammer.commands.main (default) | Sends information about banhammer | | /banhammer reload | banhammer.commands.reload (op 4) | Reloads mods config | | /banhammer import <source> [<remove>] | banhammer.commands.import (op 4) | Imports bans from other sources (and removes them from it, if remove is set to true) | | /ban <player> [<reason>] | banhammer.punish.ban (op 3/config) | Bans player | | /tempban <player> <duration> [<reason>] | banhammer.punish.tempban (op 3/config) | Bans player for provided time | | /ban-ip <player> [<reason>] | banhammer.punish.banip (op 3/config) | Bans player (by ip) | | /tempban-ip <player> <duration> [<reason>] | banhammer.punish.tempbanip (op 3/config) | Bans player (by ip) for provided time | | /mute <player> [<reason>] | banhammer.punish.mute (op 3/config) | Mutes player | | /tempmute <player> <duration> [<reason>] | banhammer.punish.tempmute (op 1) | Mutes player for provided time | | /kick <player> [<reason>] | banhammer.punish.kick (op 3/config) | Kicks player from server | | /unban <player> | banhammer.unpunish.unban (op 3/config) | Removes player's (temp)bans | | /unban-ip <player> | banhammer.unpunish.unbanip (op 3/config) | Removes player's (temp)ip bans | | /unmutes <player> | banhammer.unpunish.unmute (op 3/config) | Removes player's (temp)mute | | /pardon <player> | banhammer.unpunish.pardon (op 3/config) | Removes all of player's punishments |

Additionally you can add -s Before reason, if you want to make that punishment silent.

Duration can be expressed in seconds (15/15s), minutes (3m), hours (24h), days (7d), years (1y) or any combination of these (5y3d9h3m8s).

Configuration

You can find this config in config/banhammer/config.json.

{
  "CONFIG_VERSION_DONT_TOUCH_THIS": 1,
  "punishmentsAreSilent": false,             // Makes all punishments silent
  "storeAllPunishmentsInHistory": true,      // Stores all punishments in additional database table
  "muteBlockedCommands": [                   // List of commands blocked to muted players
    "me",
    "msg",
    "tell",
    "w",
    "teammsg"
  ],
  "standardBanPlayersWithBannedIps": false,  // Gives users standard bans, when they are ip banned
  "autoBansFromIpBansAreSilent": true,       // Makes autobans from ip ban silent
  "defaultTempPunishmentDurationLimit": "-1",// Sets limit for duration of temporary punishments. -1 = no limit
  "permissionTempLimit": {                   // Allows to change duration limit of punishment with `banhammer.duration.<entry>` permission
    "example": "31d"
  },
  "discordWebhookUrl": "",                   // Url for discord webhook, leave empty to disable it
  "databaseType": "sqlite",                  // Changes database type ("sqlite" or "mysql")
  "sqliteDatabaseLocation": "banhammer-sqlite.db",  // sqlite databases location (from server's directory)
  "mysqlDatabaseAddress": "",                // Address of mysql database
  "mysqlDatabaseName": "",                   // Name of mysql database
  "mysqlDatabaseUsername": "",               // Username of mysql user
  "mysqlDatabasePassword": ""                // Password of mysql user
}

You can also edit in game messages which are stored in config/banhammer/messages.json You can also edit discord ones in config/banhammer/discord-messages.json It's little more tricky as it has many values:

{
  /*...*/
  "send[Type]Message": true,     // Enables sending of the message       
  "temp[Type]Message": {     
    "embed": true,               // Sends message as embed
    "message": [
      /* Message content */
    ],
    "avatar": "",               // Url to avatar (or empty to use default one)
    "name": "",                 // Name (or empty to use default one)
    "embedTitle": "",           // Embed's title (or empty to disable)
    "embedTitleUrl": "",        // Embed's title url (or empty to disable)
    "embedColor": "red",        // Embed color (or empty to disable)
    "embedImage": "",           // Embed's image (or empty to disable)
    "embedThumbnail": "",       // Embed's thumbnail (or empty to disable)
    "embedFields": [            // Embed fields (or empty to disable)
      /* You can have as many as many of these as you want */
      {
        "name": "",             // Field's name
        "content": "",          // Field's content
        "inline": false         // Makes field inline
      }
    ] 
  },
  /*...*/
}

Discord and ingame messages can use predefined variables: For punishments:

  • ${operator}: Operator username
  • ${operator_uuid}: Operator UUID
  • ${banned}: Punished user's username
  • ${banned_uuid}: Punished user's UUID
  • ${reason}: Reason given for the punishment
    • Value is Unknown reason if no reason was given
  • ${expiration_date}: Absolute date of when the punishment will expire (if applicable)
  • ${expiration_time}: Relative time of when the punishment will expire (if applicable)
  • ${expiration_timestamp}: Timestamp when the punishment will expire (if applicable)
  • ${punishment_timestamp}: Timestamp of when the punishment was given

For removing: ${operator}, ${operator_uuid}, ${banned}, ${banned_uuid}

View on GitHub
GitHub Stars15
CategoryDevelopment
Updated2mo ago
Forks7

Languages

Java

Security Score

90/100

Audited on Feb 3, 2026

No findings