[1.16-1.21] PixelBattle >>> EXPORT .PNG .MP4 | TimeLapse SYSTEM | MySQL, SQLite, YAML icon

[1.16-1.21] PixelBattle >>> EXPORT .PNG .MP4 | TimeLapse SYSTEM | MySQL, SQLite, YAML -----

A game where everyone has to defend their place on the canvas



Description: A game where everyone has to defend their place on the canvas
Commands:
  • /pixelbattle - Main command
Features:
  • NO DEPENDENCIES !
  • HEX Support !
  • TIMELAPSE SYSTEM (Export history of YOUR PixelBattle in .mp4 OR play timelapse animation in-game)
  • THE LEVEL SYSTEM
  • Canvas export System (Export actual Canvas in .png)
  • All messages can be configured to be displayed in chat, title, actionbar (+ Sound)
  • MySQL, SQLite, YAML Database support
  • Advanced and easy-to-understand configuration
  • Own leaderboard system
  • WIPE via command
  • 100% FREE (Including web tool)
The plugin has only one configuration file:
Code (YAML):
#############################
#        PixelBattle        #
#     Made by GameDoctor    #
#           2024            #
#############################

# All instructions for using and configuring the plugin are provided on SpigotMC:
# https://www.spigotmc.org/members/gamedoctor.792259

settings
: # General settings
  # The prefix of all messages in the chat. You can leave it empty
  messagesPrefix
: "&fPixelBattle &e> "
  # The number of seconds until the next painting
  paintCooldown
: 10
  # The beginning of the right, in which you can specify the delay for the next painting. For example, pixelbattle.cooldown.5 - Sets the delay to the player for 5 seconds. Integers only
  cooldownPermission
: "pixelbattle.cooldown."
  # Clears inventory, restores hunger, health, and resets the player's level
  resetPlayer
: false
  # Protect the player from damage, disable PvP, prohibit interaction with inventory
  guardPlayer
: true
  # Allows players to hit each other without causing damage
  allowKnock
: false
  # If true, the inventory will close when the player is hit by another player
  closeInventoryOnKnock
: true
  # Prevents players from falling out of the world
  noFall
: false
  # Enables flight mode for everyone who is on PixelBattle
  enableFly
: true
  # If true, the player's inventory and other data will be restored as soon as he exits PixeBattle
  restoreDataOnExit
: true
  # If false, the blocks cannot be broken or placed everywhere. If true, the blocks can be broken or placed everywhere except on the canvas
  blockModify
: false
  # Prohibit players from interacting with chests, stoves, workbenches and other blocks
  preventBlockInteract
: false
  # The standard game mode when entering PixelBattle (NO = DO NOT CHANGE)
  defaultGamemode
: "NO"
  # Time display in format MM:SS (Minutes:Seconds). When false, just seconds are displayed
  timeFormat
: false
  # Whether to log the installation of each pixel (It is necessary to create a TimeLapse)
  logPixelPaint
: true
  # Whether to save the current state of the canvas in the database. (Required to be able to export .png and timelapse images to .mp4)
  # To use this function, the canvas must be horizontal, without changing the height and with equal sides. For example: 11x11, 100x100, 123x123 and so on
  saveCanvasState
: true
  # If true, the players will not be able to paint over the block with the same color
  preventPaintSame
: false
  # The standard color of the canvas
  defaultColor
: "WHITE_WOOL"
  # If true, when painting over, this block will be taken away from the previous one who painted over
  removePixelsWhenPainted
:
    enable
: false
    # If true, experience will also be taken away for the block, the level can also be lowered
    removeExp
: true
    # If true, the option will only apply to other players (If the player paints over his pixel, he will not lose experience)
    onlyOther
: true
  # If true, all numbers will be presented in a shorter format. For example: 1000 = 1K, 1000000 = 1M and so on
  numberFormatting
:
    enable
: false
    # The number of digits after the decimal point
    fractionDigits
: 1
  # Time format per line
  timeStringFormat
:
    # If true, only the largest is displayed. For example, not 1 d. 12 h. 5 m. 13 s., but just 1 d.
    displayOnlyHighest
: true
    seconds
: "s."
    minutes
: "m."
    hours
: "h."
    days
: "d."

canvas
: # Canvas settings
  world
: "world"
  # The place where players will appear after logging into PixelBattle
  spawn
:
    x
: 1
    y
: 1
    z
: 1
    yaw
: 1
    pitch
: 1
  # The place where players will appear when exiting PixelBattle
  exitSpawn
:
    # If true, the player will be teleported to these coordinates after exiting PixelBattle
    teleportOnExit
: true
    # Specify only if the exit from PixelBattle is in another world
    world
: "world"
    x
: 1
    y
: 1
    z
: 1
    yaw
: 1
    pitch
: 1
  # The first point of the canvas
  posOne
:
    x
: 1
    y
: 1
    z
: 1
  # The second point of the canvas
  posTwo
:
    x
: 1
    y
: 1
    z
: 1

database
: # Database settings
  # Available types: FILE, MYSQL, SQLITE
  type
: SQLITE
  # It is specified without a format. Used for FILE (.yml) and SQLITE (.db)
  fileName
: "database"
  # The name of the table with the players. Used for FILE, MYSQL, and SQLITE types
  playersTableName
: "pb_players"
  # The name of the table with the logs of the shaded pixels. Used for FILE, MYSQL, and SQLITE types
  pixelLogsTableName
: "pb_pixelLogs"
  # The name of the table with the current state of the canvas. Used for FILE, MYSQL, and SQLITE types
  canvasStateTableName
: "pb_canvasState"
  # The name of the database. Only for MYSQL
  databaseName
: "pixelbattle"
  # The host. Only for MYSQL
  host
: "localhost"
  # User. Only for MYSQL
  user
: "root"
  # Password. Only for MYSQL
  password
: "-"
  # Additional connection parameters. Change it if you know what it's for. Only for MYSQL
  arguments
: "?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false"

command
: # Main command settings /pixelbattle
  join
: # The name of the subcommand. Do not change
    # The right to enter PixelBattle through the /pixelbattle join command. Set to '-' if the right is not required
    usePermission
: "pixelbattle.join.use"
    # The right to move other players to PixelBattle with the /pixelbattle join <nickname> command. Set to '-' if the right is not required
    useOnOtherPermission
: "pixelbattle.join.use.other"
  leave
: # The name of the subcommand. Do not change
    # The right to exit PixelBattle via the /pixelbattle leave command. Set to '-' if the right is not required
    usePermission
: "pixelbattle.leave.use"
    # The right to throw other players out of PixelBattle with the /pixelbattle leave <nickname> command. Set to '-' if the right is not required
    useOnOtherPermission
: "pixelbattle.leave.use.other"
  timelapse
: # The name of the subcommand. Do not change
    # The right to play a TimeLapse via the /pixelbattle timelapse command. Set to '-' if the right is not required
    usePermission
: "pixelbattle.timelapse.use"
  wipe
: # The name of the subcommand. Do not change
    # The right to reset canvas history and data via the /pixelbattle wipe command. Set to '-' if the right is not required
    usePermission
: "pixelbattle.wipe.use"
  web
: # The name of the subcommand. Do not change
    # The right to work with the WEB Tool through the /pixelbattle web command. Set to '-' if the right is not required
    usePermission
: "pixelbattle.web.use"
  users
: # The name of the subcommand. Do not change
    # The right to manage player data through the pixelbattle users team. Set to '-' if the right is not required
    usePermission
: "pixelbattle.users.use"
  mod
: # The name of the subcommand. Do not change
    # The right to moderate the canvas through the /pixelbattle mod command. Set to '-' if the right is not required
    usePermission
: "pixelbattle.mod.use"

standaloneServer
: # Use this if PixelBattle is on a separate server. Auto-join will work
  enable
: false
  # Setting up redirection to another server after exiting PixelBattle mode (BungeeCord)
  redirectOnExit
:
    enable
: false
    server
: "lobby"

exitItem
: # An item in the inventory for quick exit from PixelBattle
  enable
: true
  # Slot in the hotbar
  slot
: 0
  material
: "COMPASS"
  glowing
: false # Makes the object shimmer when true
  name
: "&aExit"
  lore
:
   - "&7Click if you want to leave"

gui
: # Setting up the color selection menu
  # Color selection menu title
  colorSelectionTitle
: "&6&lColor selection"
  # The title of the menu of the history of colorings
  paintLogsTitle
: "&b&lThe history of colorings &8(&b%x% %y% %z%&8)"
  items
: # You can't add your own. You can specify lore for any
    back
: # Do not change this line
      enable
: true
      # The right to display this item. Set to '-' if not required
      permission
: "-"
      name
: "&cBack"
      material
: "OAK_SIGN"
    next
: # Do not change this line
      enable
: true
      # The right to display this item. Set to '-' if not required
      permission
: "-"
      name
: "&cNext"
      material
: "OAK_SIGN"
    footer
: # Do not change this line
      enable
: true
      # The right to display this item. Set to '-' if not required
      permission
: "-"
      name
: " "
      material
: "GRAY_STAINED_GLASS_PANE"
    info
: # Do not change this line
      enable
: true
      # The right to display this item. Set to '-' if not required
      permission
: "-"
      name
: "&cInformation"
      material
: "BOOK"
      lore
: # Lore setting (Can be removed)
        - "&7Color
: %color%"
        - "&7By player
: &c%player%"
        - "&7Repainted &e%paintedCount%&7 times"
        - "&7Date
: &e%date% ( %time%)"
        - " "
        - "&aClick to open logs"
    paintedPixelInfo
: # Do not change this line
      # If true, players will be able to view the history of coloring each pixel, if false, this function will be unavailable
      enable
: true
      # The right to display this item. Set to '-' if not required
      permission
: "-"
      name
: "%colorName%"
      lore
: # Lore setting (Can be removed)
        - "&7By player
: &c%player%"
        - "&7Date
: &e%date% ( %time%)"
    color
: # Do not change this line
      # Lore for all color items
      defaultLore
:
        - "&7Level
: &e%level%"
        - "&7EXP
: &9%exp%"
        - "%itemLore%" # %itemLore% - Individual lore of color items

leveling
: # The level system
  # If you don't need a level system, set it to false
  enable
: true
  # If true, the experience will be added even when the level is already at its maximum
  stillAddExpWhenMax
: false
  # The level that will be given to all new players
  defaultLevel
: 1
  # The format for the LevelUp message (%newFeatures%)
  format
:
    colors
: "&7- New colors: %colors%"
    cooldown
: "&7- Reduced cooldown: &6%cooldown% sec."
    empty
: "&cEmpty"
  levels
: # Setting up levels
    2
: # Level number. The level numbers should go in order
      # The delay for painting, which begins to take effect from the moment this level is reached. You can remove it
      paintCooldown
: 9
      # The amount of experience required to reach this level
      needExp
: 10
    3
:
      needExp
: 20
    4
:
      paintCooldown
: 8
      needExp
: 30
    5
:
      paintCooldown
: 7
      needExp
: 40
    6
:
      needExp
: 50
    7
:
      paintCooldown
: 6
      needExp
: 60
    8
:
      needExp
: 70
    9
:
      paintCooldown
: 5
      needExp
: 80
    10
:
      paintCooldown
: 4
      needExp
: 100

scoreboard
: # Scoreboard settings
  enable
: true
  # Header
  name
: "&a&lPixelBattle"
  # Indicated In TICKS. (20 ticks = 1 second, 10 ticks = half a second). 0 - If you do not need to update
  refreshTime
: 15
  lines
:
   - "&ePlayer:"
    - "&c%player%"
    - " "
    - "&eLevel:"
    - "&a%level% &7(&c%exp%&8/&a%expToNextLevel%&7)"
    - " "
    - "&ePainted:"
    - "&a%painted%"
    - " "
    - "&eIn game:"
    - "&a%playedTime%"
    - " "
    - "&eLeft
: &6&l%time%"

leaderboards
: # Leaderboards in the form of a hologram
  # The name of the column with numeric data (Do not touch it if you do not know how to work with it)
  painted
:
    enable
: false
    # The data type to which the value will be converted. Either INT is a number, or TIME is the time in the string
    valueType
: INT
    # Header
    title
:
     - "&eLeaderboard"
      - "&e-= &bPainted pixels &e=-"
    # String format
    format
: "&7%num%) &a%player% &8- &c%value%"
    # Empty string format
    emptyFormat
: "&7%num%) &cEmpty"
    # Number of lines (Header lines are not counted)
    rows
: 5
    # The time of the update. Specified in seconds. 0 - If no update is required
    updateDelay
: 10
    # Location
    location
:
      world
: "world"
      x
: 1
      y
: 1
      z
: 1
  playedTime
:
    enable
: false
    # The data type to which the value will be converted. Either INT is a number, or TIME is the time in the string
    valueType
: TIME
    # Header
    title
:
     - "&eLeaderboard"
      - "&e-= &bTime in game &e=-"
    # String format
    format
: "&7%num%) &a%player% &8- &c%value%"
    # Empty string format
    emptyFormat
: "&7%num%) &cEmpty"
    # Number of lines (Header lines are not counted)
    rows
: 5
    # The time of the update. Specified in seconds. 0 - If no update is required
    updateDelay
: 10
    # Location
    location
:
      world
: "world"
      x
: 1
      y
: 1
      z
: 1
  level
:
    enable
: false
    # The data type to which the value will be converted. Either INT is a number, or TIME is the time in the string
    valueType
: INT
    # Header
    title
:
     - "&eLeaderboard"
      - "&e-= &bGame level &e=-"
    # String format
    format
: "&7%num%) &a%player% &8- &c%value%"
    # Empty string format
    emptyFormat
: "&7%num%) &cEmpty"
    # Number of lines (Header lines are not counted)
    rows
: 5
    # The time of the update. Specified in seconds. 0 - If no update is required
    updateDelay
: 10
    # Location
    location
:
      world
: "world"
      x
: 1
      y
: 1
      z
: 1

messages
: # Message settings. You can use chat, title, ActionBar, sound and broadcast in any message
  welcome
:
    chat
:
      enable
: true
      lines
:
       - "&7Welcome to &ePixelBattle"
    title
:
      enable
: true
      line1
: "&7Welcome,"
      line2
: "&c%player%"
      fadeIn
: 20 # 1 sec
      stay
: 60 # 3 sec
      fadeOut
: 20 # 1 sec
    actionBar
:
      enable
: true
      message
: "&7Welcome to &ePixelBattle&7, &c%player%"
    sound
: # Take the names of the sounds from the site https://www.spigotmc.org/wiki/cc-sounds-list
      enable
: true
      name
: "ENTITY_PLAYER_LEVELUP"
    broadcast
:
      enable
: false
      lines
:
       - "&7Player &e%player% &7has joined us!"
  levelUp
: # Used with leveling.enable = true
    chat
:
      enable
: true
      lines
:
       - "&7Your level has been upgraded to &e%level%"
        - "&7Now available:"
        - "%newFeatures%"
    title
:
      enable
: true
      line1
: "&a&lLevel UP!"
      # %pLevel% is the previous level. %level% - new level
      line2
: "&c%pLevel%&7->&a%level%"
      fadeIn
: 20 # 1 sec
      stay
: 60 # 3 sec
      fadeOut
: 20 # 1 sec
    actionBar
:
      enable
: false
      message
: "&7&lNew level: &e%level%"
    sound
: # Take the names of the sounds from the site https://www.spigotmc.org/wiki/cc-sounds-list
      enable
: true
      name
: "ENTITY_PLAYER_LEVELUP"
    broadcast
:
      enable
: true
      lines
:
       - "&7Player &c%player% &7has raised his level from &c&l%pLevel% &7to &e&l%level%"
  levelDown
: # Used with leveling.enable = true
    chat
:
      enable
: true
      lines
:
       - "&7Your level has been lowered to &c%level%"
    title
:
      enable
: true
      line1
: "&c&lLevel is lowered..."
      # %pLevel% is the previous level. %level% - new level
      line2
: "&a%pLevel%&7->&c%level%"
      fadeIn
: 20 # 1 sec
      stay
: 60 # 3 sec
      fadeOut
: 20 # 1 sec
    actionBar
:
      enable
: false
      message
: "&7&lNew level: &c%level%"
    sound
: # Take the names of the sounds from the site https://www.spigotmc.org/wiki/cc-sounds-list
      enable
: true
      name
: "BLOCK_ANVIL_BREAK"
    broadcast
:
      enable
: true
      lines
:
       - "&7Player level &c%player% &7is lowered from &a&l%pLevel% &7to &c&l%level%"
  expReceived
: # Used with leveling.enable = true
    actionBar
:
      enable
: true
      message
: "&9+%exp% EXP"
    sound
: # Take the names of the sounds from the site https://www.spigotmc.org/wiki/cc-sounds-list
      enable
: true
      name
: "ENTITY_PLAYER_LEVELUP"
  expLost
: # Used with leveling.enable = true
    actionBar
:
      enable
: true
      message
: "&c-%exp% EXP"
    sound
: # Take the names of the sounds from the site https://www.spigotmc.org/wiki/cc-sounds-list
      enable
: true
      name
: "BLOCK_ANVIL_BREAK"
  pixelPainted
:
    chat
:
      enable
: true
      lines
:
        - "&7You have successfully painted over the block. New color
: %color%"
    title
:
      enable
: true
      line1
: "&a&lSuccess"
      line2
: "&e&lYou have painted over the block"
      fadeIn
: 20 # 1 sec
      stay
: 60 # 3 sec
      fadeOut
: 20 # 1 sec
    actionBar
:
      enable
: false
      message
: "&7You have painted over the block with a color %color%"
    sound
:
      enable
: true
      name
: "ENTITY_EXPERIENCE_ORB_PICKUP"
  pixelDelay
:
    chat
:
      enable
: false
      lines
:
       - "You will be able to paint over the block in %time%"
    title
:
      enable
: true
      line1
: " " # The first line is empty to display only the second one
      line2
: "&cLeft: &e%time%"
      fadeIn
: 0
      stay
: 60 # 3 sec
      fadeOut
: 0
    sound
:
      enable
: true
      name
: "ENTITY_ITEM_BREAK"
  movingToServer
: # Used with standaloneServer.enable = true and exitItem.enable = true
    chat
:
      enable
: true
      lines
:
       - "&aYou will now be moved to the server &e%server%"
  exitItemExit
: # Used when logging out of the system.enable = true and standaloneServer.enable = false
    chat
:
      enable
: true
      lines
:
       - "&aYou have successfully logged out of PixelBattle"
  cmdNoPerm
:
    chat
:
      enable
: true
      lines
:
       - "&cYou don't have enough rights"
    sound
:
      enable
: true
      name
: "ENTITY_ITEM_BREAK"
  cmdHelp
:
    chat
:
      enable
: true
      lines
:
       - "&e------------ &dPixelBattle &e------------"
        - "&d/%cmd% &7join&f: Log in to PixelBattle"
        - "&d/%cmd% &7leave&f: Exit from PixelBattle"
        - "&d/%cmd% &7timelapse <speed>&f: Play a timelapse on the canvas"
        - "&d/%cmd% &7wipe&f: To perform a wipe of data and history of canvas"
        - "&d/%cmd% &7web&f: Working with a WEB Tool"
        - "&d/%cmd% &7users&f: Player management"
        - "&d/%cmd% &7mod&f: Canvas moderation"
  cmdWebHelp
:
    chat
:
      enable
: true
      lines
:
       - "&e------------ &dWEB Tool &e------------"
        - "&d/%cmd% &7web canvas&f: Create a picture of the canvas (.png)"
        - "&d/%cmd% &7web timelapse&f: Create a PixelBattle TimeLapse (.mp4)"
  cmdUsersHelp
:
    chat
:
      enable
: true
      lines
:
       - "&e------------ &dPlayer Management &e------------"
        - "&d/%cmd% &7users wipe <name>&f: Reset player data"
        - "&d/%cmd% &7users setLevel <name> <number>&f: Set the level for the player"
        - "&d/%cmd% &7users setExp <name> <number>&f: Set the experience for the player"
        - "&d/%cmd% &7users setPainted <name> <number>&f: Set the number of painted pixels for the player"
  cmdModHelp
:
    chat
:
      enable
: true
      lines
:
       - "&e------------ &9Moderation &e------------"
        - "&9/%cmd% &7mod rollback <name> <radius> <time>&f: Rollback painted pixels"
  cmdModRollbackStart
:
    chat
:
      enable
: true
      lines
:
       - "&eRollback of player's &c%target%&e actions in radius &a%radius%&e for &b%time%&e has begun..."
  cmdModRollbackRunning
:
    actionBar
:
      enable
: true
      message
: "&eProcessed: &c%now%&7/&a%total% &7(&b%success%&7)"
  cmdModRollbackEnd
:
    chat
:
      enable
: true
      lines
:
       - "&aRollback of player's &c%target%&a actions completed. Rollbacked paintings: &e%count%"
  cmdNoPlayer
:
    chat
:
      enable
: true
      lines
:
       - "&cPlayer &e%target% &cnot found"
    sound
:
      enable
: true
      name
: "ENTITY_ITEM_BREAK"
  cmdAlreadyIn
:
    chat
:
      enable
: true
      lines
:
       - "&cPlayer &e%target% &calready in PixelBattle"
    sound
:
      enable
: true
      name
: "ENTITY_ITEM_BREAK"
  cmdNotIn
:
    chat
:
      enable
: true
      lines
:
       - "&cPlayer &e%target% &cnot in PixelBattle"
    sound
:
      enable
: true
      name
: "ENTITY_ITEM_BREAK"
  cmdSuccess
:
    chat
:
      enable
: true
      lines
:
       - "&aSuccessfully"
  cmdIncorrect
:
    chat
:
      enable
: true
      lines
:
       - "&cThe data is incorrectly specified"
  timelapseStarting
:
    chat
:
      enable
: true
      lines
:
        - "&aThe preparation of the TimeLapse has begun. Speed
: &e%speed%"
  timelapseStarted
:
    chat
:
      enable
: true
      lines
:
        - "&aThe TimeLapse playback has started. Frames
: &e%frames%&a, approximate duration : &b%time%"
    broadcast
:
      enable
: true
      lines
:
       - "&aPlayer &e%player% &ahas started playing the TimeLapse! Approximate Duration: &b%time%"
  timelapseEnded
:
    broadcast
:
      enable
: true
      lines
:
       - "&aThe TimeLapse playback is completed, the canvas is up to date"
  canvasLocked
:
    chat
:
      enable
: true
      lines
:
       - "&cYou can't interact with the canvas right now"
  timelapseFrameCounter
:
    actionBar
:
      enable
: true
      message
: "&7Frame: &c%current%&7/&a%all%"
  preventedSameColor
: # Used when preventPaintSame = true
    chat
:
      enable
: true
      lines
:
       - "&cYou cannot fill the block with the same color (%color%&c)"
    sound
:
      enable
: true
      name
: "ENTITY_ITEM_BREAK"
  wipeStarted
:
    chat
:
      enable
: true
      lines
:
       - "&cThe wipe process has begun... Do not touch the canvas"
  noData
:
    chat
:
      enable
: true
      lines
:
        - "&cThe necessary data is missing to perform this operation
: &e%data%"
  webRequest
:
    chat
:
      enable
: true
      lines
:
       - "&eThe request has been sent. Please wait"
  webAnswer
:
    chat
:
      enable
: true
      lines
:
        - "&aServer response
: &e%answer%"

items
: # Colors. You can add as many as you want. There are no limits
  WHITE_WOOL
: # Block name
    name
: "&fWhite" # The displayed name
    # The minimum level required to use this color. You can remove it
    needLevel
: 1
    # The amount of experience that painting with this color gives. You can remove it
    givesExp
: 1
    permission
: "-" # The right to use. If '-' - then the rights are not needed
    glowing
: false # Makes the object shimmer (Can be removed)
    lore
: # Lore setting (Can be removed)
      - "&bYou can set the lore for each color"
      - "&c&nOr just remove it =)"
  ORANGE_WOOL
:
    name
: "&6Orange"
    needLevel
: 2
    givesExp
: 1
    permission
: "-"
  MAGENTA_WOOL
:
    name
: "&5Magenta"
    needLevel
: 2
    givesExp
: 1
    permission
: "-"
  LIGHT_BLUE_WOOL
:
    name
: "&bLight Blue"
    needLevel
: 2
    givesExp
: 1
    permission
: "-"
  YELLOW_WOOL
:
    name
: "&eYellow"
    needLevel
: 3
    givesExp
: 2
    permission
: "-"
  LIME_WOOL
:
    name
: "&aLime"
    needLevel
: 3
    givesExp
: 2
    permission
: "-"
  PINK_WOOL
:
    name
: "&dPink"
    needLevel
: 3
    givesExp
: 2
    permission
: "-"
  GRAY_WOOL
:
    name
: "&8Gray"
    needLevel
: 3
    givesExp
: 2
    permission
: "-"
  LIGHT_GRAY_WOOL
:
    name
: "&7Light Gray"
    needLevel
: 3
    givesExp
: 2
    permission
: "-"
  CYAN_WOOL
:
    name
: "&3Cyan"
    needLevel
: 4
    givesExp
: 2
    permission
: "-"
  PURPLE_WOOL
:
    name
: "&5Purple"
    needLevel
: 4
    givesExp
: 2
    permission
: "-"
  BLUE_WOOL
:
    name
: "&1Blue"
    needLevel
: 4
    givesExp
: 2
    permission
: "-"
  BROWN_WOOL
:
    name
: "&6Brown"
    needLevel
: 5
    givesExp
: 3
    permission
: "-"
  GREEN_WOOL
:
    name
: "&2Green"
    needLevel
: 5
    givesExp
: 3
    permission
: "-"
  RED_WOOL
:
    name
: "&4Red"
    needLevel
: 6
    givesExp
: 3
    permission
: "-"
  BLACK_WOOL
:
    name
: "&0Black"
    needLevel
: 6
    givesExp
: 3
    permission
: "-"
  GOLD_BLOCK
:
    name
: "&6&lGold"
    givesExp
: 10
    glowing
: true # Makes the object shimmer (Can be removed)
    permission
: "pixelbattle.colors.gold_block"
  DIAMOND_BLOCK
:
    name
: "&b&lLight Blue"
    givesExp
: 10
    glowing
: true # Makes the object shimmer (Can be removed)
    permission
: "pixelbattle.colors.diamond_block"
  # Concrete
  WHITE_CONCRETE
:
    name
: "&fWhite"
    needLevel
: 7
    givesExp
: 4
    permission
: "-"
  ORANGE_CONCRETE
:
    name
: "&6Orange"
    needLevel
: 7
    givesExp
: 4
    permission
: "-"
  MAGENTA_CONCRETE
:
    name
: "&dMagenta"
    needLevel
: 7
    givesExp
: 4
    permission
: "-"
  LIGHT_BLUE_CONCRETE
:
    name
: "&bLight Blue"
    needLevel
: 7
    givesExp
: 4
    permission
: "-"
  YELLOW_CONCRETE
:
    name
: "&eYellow"
    needLevel
: 7
    givesExp
: 4
    permission
: "-"
  LIME_CONCRETE
:
    name
: "&aLime"
    needLevel
: 8
    givesExp
: 4
    permission
: "-"
  PINK_CONCRETE
:
    name
: "&dPink"
    needLevel
: 8
    givesExp
: 4
    permission
: "-"
  GRAY_CONCRETE
:
    name
: "&8Gray"
    needLevel
: 8
    givesExp
: 4
    permission
: "-"
  LIGHT_GRAY_CONCRETE
:
    name
: "&7Light Gray"
    needLevel
: 8
    givesExp
: 4
    permission
: "-"
  CYAN_CONCRETE
:
    name
: "&3Cyan"
    needLevel
: 9
    givesExp
: 5
    permission
: "-"
  PURPLE_CONCRETE
:
    name
: "&5Purple"
    needLevel
: 9
    givesExp
: 5
    permission
: "-"
  BLUE_CONCRETE
:
    name
: "&1Blue"
    needLevel
: 9
    givesExp
: 5
    permission
: "-"
  BROWN_CONCRETE
:
    name
: "&6Brown"
    needLevel
: 9
    givesExp
: 5
    permission
: "-"
  GREEN_CONCRETE
:
    name
: "&2Green"
    needLevel
: 10
    givesExp
: 6
    permission
: "-"
  RED_CONCRETE
:
    name
: "&4Red"
    needLevel
: 10
    givesExp
: 6
    permission
: "-"
  BLACK_CONCRETE
:
    name
: "&0Black"
    needLevel
: 10
    givesExp
: 6
    permission
: "-"
The most necessary thing you need to configure for the plugin to work is section canvas:
Code (YAML):
canvas : # Canvas settings
  world
: "world"
  # The place where players will appear after logging into PixelBattle
  spawn
:
    x
: 1
    y
: 1
    z
: 1
    yaw
: 1
    pitch
: 1
  # The place where players will appear when exiting PixelBattle
  exitSpawn
:
    # If true, the player will be teleported to these coordinates after exiting PixelBattle
    teleportOnExit
: true
    # Specify only if the exit from PixelBattle is in another world
    world
: "world"
    x
: 1
    y
: 1
    z
: 1
    yaw
: 1
    pitch
: 1
  # The first point of the canvas
  posOne
:
    x
: 1
    y
: 1
    z
: 1
  # The second point of the canvas
  posTwo
:
    x
: 1
    y
: 1
    z
: 1
Here you must specify the region of your canvas - posOne and posTwo, as well as the spawn location where players will appear after entering PixelBattle - spawn, and exitSpawn - the place where players will appear when exiting PixelBattle. Please note: If you want to use the functions of the WEB tool (Creating a time lapse in .mp4 format, exporting a .png canvas), then the canvas must be horizontal (WITHOUT changing the height of Y). Also, the canvas must necessarily have equal sides. For example: 11x11, 100x100, 123x123 and so on.
This completes the necessary setup.
Video with the necessary settings:

Configuring OPTIONAL parameters:
To use the PixelBattle plugin on a separate server as correctly as possible, you can set parameter standaloneServer.enable to true - Then, when logging on to the server, the player will IMMEDIATELY be redirected to the spawn site at the PixelBattle canvas. If you want the player to be redirected to another server after exiting, set the parameter redirectOnExit.enable to true. To do this through an item in the inventory, set the value exitItem.enable also to true. It is recommended to set the parameters resetPlayer, guardPlayer, enableFly to true, the parameter blockModify to false, and the parameter defaultGamemode on ADVENTURE to prohibit any unnecessary actions on the server. If you don't want players to drop out of the world, you can set the noFall parameter to true. After making this configuration, you will get rid of the need to install additional plugins, such as WorldGuard and the like.

To remove the messages about the entry/exit of players, you can use my most simple plugin SimpleJoinQuitMessages
The PixelBattle plugin contains a lot of optional, but very interesting functionality. For example, you can make a leaderboard for any of the available PixelBattle player parameters: To do this, set the value of the leaderboards.painted.enable parameter to true, do not forget to specify the location location.

Also, additional functionality can include a Scoreboard (Information table on the right side of the screen). To enable the scoreboard display, set the value of the scoreboard.enable parameter to true.

You can also customize the colors (blocks) that players can use on the PixelBattle canvas. Each block can be assigned a unique display name, lore (description) and the right to use.

Please note - If you do not want any colors (blocks) and/or commands to have the right to use - set the value of the corresponding right to "-".
The plugin currently has only one command - /pixelbattle and several sub-commands:
  1. /pixelbattle join - Redirects you to PixelBattle when activated. It can be used on other players. For example, you can send a Tester player to PixelBattle - /pixelbattle join Tester
  2. /pixelbattle leave - When activated, forces the player to exit PixelBattle. It can be used on other players. For example, you can kick out a Tester player from PixelBattle - /pixelbattle leave Tester
  3. /pixelbattle timelapse <speed> - Allows you to play a timelapse INSIDE THE GAME. The animation will be shown directly on the PixelBattle canvas, and during playback, the initiator's animation progress will be displayed in the actionbar - the ratio of played frames to their total number. During the animation, players will not be able to interact with the canvas. You cannot interrupt the animation, calculate the playback speed correctly. The speed of one frame is specified in MILLISECONDS - by default 8. 1000 Milliseconds = 1 second
  4. /pixelbattle wipe - Starts the process of deleting the data and history of the PixelBattle canvas. Deleted data cannot be restored, use with caution
  5. /pixelbattle web canvas - Returns a link to the image (.png) in response of your canvas
  6. /pixelbattle web timelapse - Starts the TimeLapse creation process and returns a link in response to tracking the creation status
  7. /pixelbattle users - Allows you to manage player data. For example, you can set the game level, the number of pixels filled in, or simply reset the player data
  8. /pixelbattle mod - Allows you to control the canvas, namely to roll back certain actions on it
The plugin can work with PlaceholderAPI. Below is a list of available placeholders:
  1. %pixelbattle_inPixelBattle% - Returns the number of players logged into PixelBattle
  2. %pixelbattle_nextPixel% - Returns the time until the next painting to a specific player. If the player is not in PixelBattle, then returns "-"
  3. %pixelbattle_painted% - Returns the number of colored blocks to a specific player. If the player is not in PixelBattle, then returns "-"
  4. %pixelbattle_playedTime% - Returns the amount of time played to a specific player. If the player is not in PixelBattle, then returns "-"
  5. %pixelbattle_exp% - Returns the amount of game experience to a specific player. If the player is not in PixelBattle or the level system is disabled, then "-" is returned
  6. %pixelbattle_level% - Returns the game level to a specific player. If the player is not in PixelBattle or the level system is disabled, then "-" is returned
  7. %pixelbattle_expToNextLevel% - Returns the remaining amount of experience to the next level to a specific player. If the player is not in PixelBattle or the level system is disabled, then "-" is returned
You can create canvas images and TimeLapse videos directly in the game without providing any data using the /pixelbattle web canvas and /pixelbattle web timelapse commands.

Below are examples of the result: (It's not a screenshot from game)
5_en.png
The plugin contains a simple API for third-party developers. To access a class with an API, use:

Code (Java):
PixelBattleAPI pixelBattleAPI = PixelBattle. getPixelBattleAPI ( ) ;
Through the PixelBattle API, you can:
  1. (void) pixelBattleAPI.joinPlayer(Player player); - Redirect the player to PixelBattle
  2. (void) pixelBattleAPI.quitPlayer(Player player); - Kick a player out of PixelBattle
  3. (boolean) pixelBattleAPI.isInPixelBattle(Player player); - Check if the player is in PixelBattle
  4. (PixelPlayer) pixelBattleAPI.getPixelPlayer(Player player); - Get the PixelPlayer class with player data
  5. (void) pixelBattleAPI.updateLeaderboard(String type); - Update a certain type of leaderboard
  6. (boolean) pixelBattleAPI.isTimeLapseActive(); - Check if in-game TimeLapse playback is active
  7. (List<Location>) pixelBattleAPI.getCanvasLocations(); - Get the locations of each block on the canvas
  8. (boolean) pixelBattleAPI.paintPixel(Player player, Location blockLocation, Material color, boolean sendMessages, boolean addExp, boolean addPainted, boolean setCooldown); - Paint block with the specified color
A number of events are also available:
  1. (Cancellable) PixelBattlePreJoinEvent - Called when someone tries to log into PixelBattle, can be canceled
  2. PixelBattleJoinEvent - Called when someone successfully logs into PixelBattle
  3. PixelBattleQuitEvent - Called when someone exits PixelBattle
  4. PixelPaintedEvent - Called when someone fills in a block. From here, data on the new pixel (PaintedPixel - getNewPixel()), data on the previous pixel (PaintedPixel - getPreviousPixel()) and the location of the shaded block (Location - getPaintedBlock()) can be obtained
  5. PixelPlayerLevelUpEvent - Called when a player raises or lowers his level. From here, the previous level (Integer - getPreviousLevel()), the new level (Integer - getNewLevel() and the type of action (LevelChangeType - getLevelChangeType()) can be obtained
The HEX color format in the plugin is similar to the one used in the infamous Essentials plugin. For the convenience of generating HEX text gradients, there is a website https://spigot.kosfarix.ru/hex

You can place text with HEX color anywhere in the plugin - Be it a hologram, a scoreboard, an item in gui or a chat message.

But keep in mind that variables (%player%, %color%, and so on) cannot be converted to this format.
Вы можете найти инструкции и демонстрацию на Русском ЗДЕСЬ


Discord: If you need any help with this plugin, you can write to me in Discord: @_gamedoctor_

Note: If you want additional functionality to be added to the plugin, just write about it in the discussion

Installation:
Download, drop it in plugins folder and restart your server
Resource Information
Author:
----------
Total Downloads: 1,940
First Release: Feb 25, 2024
Last Update: Jan 2, 2025
Category: ---------------
All-Time Rating:
1 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings