Minecraft Guides

NuVotifier + VotingPlugin

NuVotifier + VotingPlugin

Standalone (Bukkit/Spigot/Paper etc...)

Make sure you have opened a port first if didn't or don't know how to, here a tutorial


1. Start

Get started by logging into the panel here 

login.png

2. Panel

After you log into your account (or if you're already logged in), click on the server where you want to enable voting.

panel.png

3. Navigate to the directory

Begin by starting your server if it's not already running.

  1. Next, go to the file manager.
  2. Within the file manager, locate and navigate to the plugins folder
panel2.png

3a. Upload the files

Inside the plugins folder, upload NuVotifier & VotingPlugin

  1. To do this, click on the upload button (as shown in the picture below).

  2. Once the upload is complete, the files will be visible in the file manager.


panel3.png

4. Restart the server

Return to the console and press the "restart" button.

panel4.png


5. Configure

Now, return to the plugins folder as you did in steps 3 and 3a. You will see two new folders named "Votifier" and "VotingPlugin." Click on the folder labeled "Votifier."

panel6.png


6. Config.yml

  1. Inside Votifier's folder open the config.yml and change the port variable to the one allocated in the network tab (in my case, the port is 25637, in yours it may be a different one).
  2. After copying the port, go back to the config.yml in plugins/Votifier/config.yml and paste the port in the port variable (by replacing 8192 with your actual port)

networkTab.png

screenshot-2024-01-01-104329.png

Setting up voting sites:

the IP can be found with this tutorial

the port can be found in the Network tab

the token can be found in Votifier's config.yml

 the public key can be found in plugins/Votifier/rsa/public.key


7. VotingPlugin

Once you've completed the setup for Votifier, proceed to configure VotingPlugin:

In the VotingPlugin folder, you'll see various files. For this tutorial, focus on "VoteSites.yml" and create valid rewards in the "Rewards" folder for your server.

VoteSites.yml:

inside we want to modify EverySiteReward variable (at the bottom of the file).

To add vote sites, we'll do it the easy way. I will create a vote site here 

Screenshot 2024-01-01 122323.png

By following this tutorial you can find your server's ip.

Now send a test vote to verify you've done everything correctly

In your server logs, it should look similar to this:

Votifier Test Vote Logs

[12:23:27 INFO]: [Votifier] Got a protocol v2 vote record from /66.175.210.190:46534 -> Vote (from:MinecraftServers.org username:MinecraftServers address:127.0.0.1 timeStamp:1704111807099 additionalData:null)
[12:23:27 INFO]: [VotingPlugin] Received a vote from service site 'MinecraftServers.org' by player 'MinecraftServers'!
[12:23:27 WARN]: [VotingPlugin] VoteSite with service site 'MinecraftServers.org' does not exist, attempting to generate...
[12:23:27 WARN]: [VotingPlugin] VoteSite MinecraftServers_org does not exist with the servicesite 'MinecraftServers.org', creating one, set AutoCreateVoteSites to false to prevent this
[12:23:27 WARN]: [VotingPlugin] VoteSites.MinecraftServers_org is not a configuration section
[12:23:27 INFO]: [VotingPlugin] Current known service sites: MinecraftServers.org
[12:23:27 WARN]: [VotingPlugin] Player MinecraftServers has not joined before, disregarding vote, set AllowUnjoined to true to prevent this
[12:23:31 INFO]: [VotingPlugin] VotingPlugin is up to date! Version: 6.15

You can find your ports in the Network tab

Screenshot 2024-01-01 120712.png

Make sure your plugin is listening on the correct port, you can check in the console when restarting, look for this line: [INFO]: [Votifier] Votifier enabled on socket /[0:0:0:0:0:0:0:0%0]:25637.                                                                                  (My votifier port is 25637 as shown above, yours may be something else)

After sending the test vote, the VoteSites.yml will set up automatically.

  MinecraftServers_org:
    Enabled: true
    ServiceSite: MinecraftServers.org
    VoteURL: VoteURL
    VoteDelay: 24.0
    DisplayItem:
      Material: GRASS
      Amount: 1
    Rewards:
      Messages:
        Player: '&aThanks for voting on %ServiceSite%!'
# Mine's this, let's break it down:
# Enabled: is a boolean variable, so only true or false, when it's true, if you run /vote, you'll see it in the VoteGUI, if disabled, it's not going to be in the GUI.
# ServiceSite: usually the domain of the voting site, don't modify it
# VoteURL: The URL where your players will vote for your server example: https://minecraftservers.org/server/randomServerID
# VoteDelay: if 24.0, it's going to be 24h, there is VoteDelayMin too if you want the delay to be based on minutes example: VoteDelayMin: 60 which means the next time you can vote is going to be in 60 minutes
# DisplayItem.Material: the item to show in the gui for the vote site
# DisplayItem.Amount: how many Material(s) to show in the vote gui
#Rewards: just ignore that, if you don't know how to setup the plugin, I will show how to give rewards in the next step through EverySiteReward in the bottom of the file.

Set the "EverySiteReward" to the name of the rewards file you are about to create:

Rewards (folder):

in plugins/VotingPlugin/Rewards

ExampleBasic.yml
# This is a reward file
# Define rewards in here (Items, commands, etc)
# File name is the reward name, without file extention
# This reward is named "ExampleBasic"
# That is what you put as a reward for other plugins, like VotingPlugin
# DO NOT HAVE DUPLICATE NAMES!!

# Wiki Page: 
# https://github.com/BenCodez/AdvancedCore/wiki/Reward-files

# This is basic reward file
# You can have multiple reward files that contain all kinds of rewards
# Below are some basic things you can have, see the advanced example for more

# You can just remove values you don't want (just delete it)
# If you just want money just have a reward file containg only "Money: 100", for example
# You can simply copy and paste from here what you want
# in other reward files, that is the way they are designed

# If true:
# Only allow one item with chance to go through (from items below)
# If no chance specificied it will only give the first item
OnlyOneItemChance: false

# Items to give to user
Items:
  # Item
  # This is not item display name
  # No duplicate names
  Diamond:
    # Item Material
    # https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
    Material: 'DIAMOND'
    # Item data value (Eg 1:4, data is 4)
    Data: 0
    # Will only give Amount if min and max amounts are 0
    Amount: 1
    # Set item durability
    # Set to 0 or remove line for no durability
    #Durability: 100
    
    # Random amount of items between Min and Max will be given
    # if min and max are not both 0
    
    # Min amount of items
    #MinAmount: 1
    
    # Max amount of items
    #MaxAmount: 4
    
    # Chance for this specific item to be given
    #Chance: 30
    
    # Item name
    # Remove this value to have no name
    Name: '&aSpecial Diamond'
    
    # Lore
    # Remove this value to have no lore
    Lore: 
    - 'Line 1'
    
    # Enchants
    # use vanilla names
    Enchants:
      unbreaking: 1
    
    # Set glowing effect on item (enchanted item effect)
    Glow: false
      
    # Skull options
    #Skull: 'PLAYERNAME'
    # One place to find skull textures is here: https://minecraft-heads.com/
    #SkullTexture: 'SKULLTEXTURE'
    #SkullURL: 'URL to skull'
     
    # Hide enchants     
    #ItemFlags:
    #- HIDE_ENCHANTS
    
    # CustomModelData nbt tag
    #CustomModelData: 100
      
    # Set power of firework
    #Power: 1
    
    # Whether or not to break lore into more than 1 line
    # Disable for certain custom items if needed
    #CheckLoreLenth: true
    #LoreLength: -1
    
    # Color of potion bottle
    # 0-255
    #PotionColor:
      #Red: 0
      #Green: 0
      #Blue: 0
      
    #Potions:
      #SPEED:
        #Duration: 20
        #Amplifier: 1
      
# Amount of money to give, requires vault
# Use 0 to give none
# Money is not per world
# Use negative to take money
# May need to use a command if it doesn't work
Money: 1000

# Pick random number between min and max money amount
#Money:
#  Min: 100
#  Max: 3000

#######
# Experience rewards
#######
# Give player experience (not levels)
#EXP: 100

# Pick a random number between min and max EXP amount to give
#EXP:
#  Min: 100
#  Max: 1000

EXPLevels: 3

# Random amount of EXP levels between 3 to 7
# EXPLevels:
  # Min: 3
  # Max: 7

# Commands to run
# Use %player% for player name
# Remove for no commands
Commands:
- say hi
#Commands:
  # Commands here will be run by console
#  Console:
#  - 'say %player% was lucky'
  # Commands here are run by player
#  Player:
#  - 'vote total'

# The messages are sent when rewards above are given to user
# set to '' to give no message (or just remove the option)
Messages:
  Player: '&aMessage on reward'
  Broadcast: '&aThis is a broadcast'
  
# Can also do this to message player
#Message: '&aMessage to player'


After setting up your rewards (you can check the above codeblock for some examples)

back in VotesSites.yml scroll to the very bottom and you'll find

EverySiteReward: {}

remove the {} and set it to the name of your rewards file without the extension (.yml)

so: 

EverySiteReward: ExampleBasic

You may want vault for permissions related and economy related

NuVotifier + VotingPlugin

Velocity

1. Requirements

NuVotifier (Velocity Only)

VotingPlugin (Velocity + All Servers You Want Rewards On)

MySQL Drivers (Velocity Only)

2. On Velocity

Go to the File Manager

Open the "plugins" folder

upload Nuvotifier, VotingPlugin and the mysql driver

2a. Configuring votifier

Restart the velocity server

Go in the plugins folder

Go in votifier's folder

click on the config.yml

change the port variable to your extra port in the network tab

2b. Configuring VotingPlugin

In votingplugin's folder, open bungeeconfig.yml

Create a database and set the given information

Set BungeeMethod to PLUGINMESSAGING

Set SendVotesToAllServers: true (for a reward on each server) or false (reward on whatever server player connects to first)

Set AllowUnjoined to true

3. On Spigot/Paper (Backend)

Go to the File Manager

Open the "plugins" folder

upload VotingPlugin

Restart the server

3a. Configuring VotingPlugin (backend)

Open VotingPlugin's folder, go to BungeeSettings.yml

Set BungeeMethod to PLUGINMESSAGING

Set UseBungeecord to true

Go back in VotingPlugin's folder, open config.yml

Set AllowUnjoined to true

Set the MySQL database's credentials to the one you've done in step 2b.

Geyser + Floodgate

Geyser + Floodgate

Standalone (Spigot & Forks)

1.  Login

Get started by logging into the panel here 

login.png


2. Panel

After you log into your account (or if you're already logged in), click on the server where you want to allow bedrock support.

panel.png

3. Navigate to the directory

Begin by starting your server if it's not already running.

  1. Next, go to the file manager.
  2. Within the file manager, locate and navigate to the plugins folder
panel2.png

3a. Upload the files

Inside the plugins folder, upload Geyser & Floodgate

  1. To do this, click on the upload button (as shown in the picture below).

  2. Once the upload is complete, the files will be visible in the file manager.

upload1.png


4. Restart the server

Return to the console and press the "restart" button. (to load the plugins folder)

panel4.png


5. Configure

Now, return to the plugins folder as you did in steps 3 and 3a. You will see two new folders named "Geyser-Spigot" and "floodgate".

Screenshot 2024-01-02 152918.png

5a. Geyser

 Click on the folder labeled "Geyser-Spigot"

Inside, you will find a file named config.yml , open it

default config.yml
# --------------------------------
# Geyser Configuration File
#
# A bridge between Minecraft: Bedrock Edition and Minecraft: Java Edition.
#
# GitHub: https://github.com/GeyserMC/Geyser
# Discord: https://discord.gg/geysermc
# Wiki: https://wiki.geysermc.org/
#
# NOTICE: See https://wiki.geysermc.org/geyser/setup/ for the setup guide. Many video tutorials are outdated.
# In most cases, especially with server hosting providers, further hosting-specific configuration is required.
# --------------------------------

bedrock:
  # The IP address that will listen for connections.
  # Generally, you should only uncomment and change this if you want to limit what IPs can connect to your server.
  #address: 0.0.0.0
  # The port that will listen for connections
  port: 19132
  # Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock.
  # This option makes the Bedrock port the same as the Java port every time you start the server.
  # This option is for the plugin version only.
  clone-remote-port: false
  # The MOTD that will be broadcasted to Minecraft: Bedrock Edition clients. This is irrelevant if "passthrough-motd" is set to true
  # If either of these are empty, the respective string will default to "Geyser"
  motd1: "Geyser"
  motd2: "Another Geyser server."
  # The Server Name that will be sent to Minecraft: Bedrock Edition clients. This is visible in both the pause menu and the settings menu.
  server-name: "Geyser"
  # How much to compress network traffic to the Bedrock client. The higher the number, the more CPU usage used, but
  # the smaller the bandwidth used. Does not have any effect below -1 or above 9. Set to -1 to disable.
  compression-level: 6
  # Whether to enable PROXY protocol or not for clients. You DO NOT WANT this feature unless you run UDP reverse proxy
  # in front of your Geyser instance.
  enable-proxy-protocol: false
  # A list of allowed PROXY protocol speaking proxy IP addresses/subnets. Only effective when "enable-proxy-protocol" is enabled, and
  # should really only be used when you are not able to use a proper firewall (usually true with shared hosting providers etc.).
  # Keeping this list empty means there is no IP address whitelist.
  # Both IP addresses and subnets are supported.
  #proxy-protocol-whitelisted-ips: [ "127.0.0.1", "172.18.0.0/16" ]
remote:
  # The IP address of the remote (Java Edition) server
  # If it is "auto", for standalone version the remote address will be set to 127.0.0.1,
  # for plugin versions, it is recommended to keep this as "auto" so Geyser will automatically configure address, port, and auth-type.
  # Leave as "auto" if floodgate is installed.
  address: auto
  # The port of the remote (Java Edition) server
  # For plugin versions, if address has been set to "auto", the port will also follow the server's listening port.
  port: 25565
  # Authentication type. Can be offline, online, or floodgate (see https://github.com/GeyserMC/Geyser/wiki/Floodgate).
  # For plugin versions, it's recommended to keep the `address` field to "auto" so Floodgate support is automatically configured.
  # If Floodgate is installed and `address:` is set to "auto", then "auth-type: floodgate" will automatically be used.
  auth-type: online
  # Allow for password-based authentication methods through Geyser. Only useful in online mode.
  # If this is false, users must authenticate to Microsoft using a code provided by Geyser on their desktop.
  allow-password-authentication: true
  # Whether to enable PROXY protocol or not while connecting to the server.
  # This is useful only when:
  # 1) Your server supports PROXY protocol (it probably doesn't)
  # 2) You run Velocity or BungeeCord with the option enabled in the proxy's main config.
  # IF YOU DON'T KNOW WHAT THIS IS, DON'T TOUCH IT!
  use-proxy-protocol: false
  # Forward the hostname that the Bedrock client used to connect over to the Java server
  # This is designed to be used for forced hosts on proxies
  forward-hostname: false

# Floodgate uses encryption to ensure use from authorised sources.
# This should point to the public key generated by Floodgate (BungeeCord, Spigot or Velocity)
# You can ignore this when not using Floodgate.
# If you're using a plugin version of Floodgate on the same server, the key will automatically be picked up from Floodgate.
floodgate-key-file: key.pem

# For online mode authentication type only.
# Stores a list of Bedrock players that should have their Java Edition account saved after login.
# This saves a token that can be reused to authenticate the player later. This does not save emails or passwords,
# but you should still be cautious when adding to this list and giving others access to this Geyser instance's files.
# Removing a name from this list will delete its cached login information on the next Geyser startup.
# The file that tokens will be saved in is in the same folder as this config, named "saved-refresh-tokens.json".
saved-user-logins:
  - ThisExampleUsernameShouldBeLongEnoughToNeverBeAnXboxUsername
  - ThisOtherExampleUsernameShouldAlsoBeLongEnough

# Specify how many seconds to wait while user authorizes Geyser to access their Microsoft account.
# User is allowed to disconnect from the server during this period.
pending-authentication-timeout: 120

# Bedrock clients can freeze when opening up the command prompt for the first time if given a lot of commands.
# Disabling this will prevent command suggestions from being sent and solve freezing for Bedrock clients.
command-suggestions: true

# The following three options enable "ping passthrough" - the MOTD, player count and/or protocol name gets retrieved from the Java server.
# Relay the MOTD from the remote server to Bedrock players.
passthrough-motd: true
# Relay the player count and max players from the remote server to Bedrock players.
passthrough-player-counts: true
# Enable LEGACY ping passthrough. There is no need to enable this unless your MOTD or player count does not appear properly.
# This option does nothing on standalone.
legacy-ping-passthrough: false
# How often to ping the remote server, in seconds. Only relevant for standalone or legacy ping passthrough.
# Increase if you are getting BrokenPipe errors.
ping-passthrough-interval: 3

# Whether to forward player ping to the server. While enabling this will allow Bedrock players to have more accurate
# ping, it may also cause players to time out more easily.
forward-player-ping: false

# Maximum amount of players that can connect. This is only visual at this time and does not actually limit player count.
max-players: 100

# If debug messages should be sent through console
debug-mode: false

# Allow third party capes to be visible. Currently allowing:
# OptiFine capes, LabyMod capes, 5Zig capes and MinecraftCapes
allow-third-party-capes: false

# Allow third party deadmau5 ears to be visible. Currently allowing:
# MinecraftCapes
allow-third-party-ears: false

# Allow a fake cooldown indicator to be sent. Bedrock players otherwise do not see a cooldown as they still use 1.8 combat.
# Please note: if the cooldown is enabled, some users may see a black box during the cooldown sequence, like below:
# https://cdn.discordapp.com/attachments/613170125696270357/957075682230419466/Screenshot_from_2022-03-25_20-35-08.png
# This can be disabled by going into Bedrock settings under the accessibility tab and setting "Text Background Opacity" to 0
# This setting can be set to "title", "actionbar" or "false"
show-cooldown: title

# Controls if coordinates are shown to players.
show-coordinates: true

# Whether Bedrock players are blocked from performing their scaffolding-style bridging.
disable-bedrock-scaffolding: false

# If set, when a Bedrock player performs any emote, it will swap the offhand and mainhand items, just like the Java Edition keybind
# There are three options this can be set to:
# disabled - the default/fallback, which doesn't apply this workaround
# no-emotes - emotes will NOT be sent to other Bedrock clients and offhand will be swapped. This effectively disables all emotes from being seen.
# emotes-and-offhand - emotes will be sent to Bedrock clients and offhand will be swapped
emote-offhand-workaround: "disabled"

# The default locale if we dont have the one the client requested. Uncomment to not use the default system language.
# default-locale: en_us

# Specify how many days images will be cached to disk to save downloading them from the internet.
# A value of 0 is disabled. (Default: 0)
cache-images: 0

# Allows custom skulls to be displayed. Keeping them enabled may cause a performance decrease on older/weaker devices.
allow-custom-skulls: true

# The maximum number of custom skulls to be displayed per player. Increasing this may decrease performance on weaker devices.
# Setting this to -1 will cause all custom skulls to be displayed regardless of distance or number.
max-visible-custom-skulls: 128

# The radius in blocks around the player in which custom skulls are displayed.
custom-skull-render-distance: 32

# Whether to add any items and blocks which normally does not exist in Bedrock Edition.
# This should only need to be disabled if using a proxy that does not use the "transfer packet" style of server switching.
# If this is disabled, furnace minecart items will be mapped to hopper minecart items.
# Geyser's block, item, and skull mappings systems will also be disabled.
# This option requires a restart of Geyser in order to change its setting.
add-non-bedrock-items: true

# Bedrock prevents building and displaying blocks above Y127 in the Nether.
# This config option works around that by changing the Nether dimension ID to the End ID. 
# The main downside to this is that the entire Nether will have the same red fog rather than having different fog for each biome.
above-bedrock-nether-building: false

# Force clients to load all resource packs if there are any.
# If set to false, it allows the user to connect to the server even if they don't
# want to download the resource packs.
force-resource-packs: true

# Allows Xbox achievements to be unlocked.
# THIS DISABLES ALL COMMANDS FROM SUCCESSFULLY RUNNING FOR BEDROCK IN-GAME, as otherwise Bedrock thinks you are cheating.
xbox-achievements-enabled: false

# Whether player IP addresses will be logged by the server.
log-player-ip-addresses: true

# Whether to alert the console and operators that a new Geyser version is available that supports a Bedrock version
# that this Geyser version does not support. It's recommended to keep this option enabled, as many Bedrock platforms
# auto-update.
notify-on-new-bedrock-update: true

# Which item to use to mark unavailable slots in a Bedrock player inventory. Examples of this are the 2x2 crafting grid while in creative,
# or custom inventory menus with sizes different from the usual 3x9. A barrier block is the default item.
unusable-space-block: minecraft:barrier

# bStats is a stat tracker that is entirely anonymous and tracks only basic information
# about Geyser, such as how many people are online, how many servers are using Geyser,
# what OS is being used, etc. You can learn more about bStats here: https://bstats.org/.
# https://bstats.org/plugin/server-implementation/GeyserMC
metrics:
  # If metrics should be enabled
  enabled: true
  # UUID of server, don't change!
  uuid: 638741bf-5803-41be-92a9-7e8677e7a73c

# ADVANCED OPTIONS - DO NOT TOUCH UNLESS YOU KNOW WHAT YOU ARE DOING!

# Geyser updates the Scoreboard after every Scoreboard packet, but when Geyser tries to handle
# a lot of scoreboard packets per second can cause serious lag.
# This option allows you to specify after how many Scoreboard packets per seconds
# the Scoreboard updates will be limited to four updates per second.
scoreboard-packet-threshold: 20

# Allow connections from ProxyPass and Waterdog.
# See https://www.spigotmc.org/wiki/firewall-guide/ for assistance - use UDP instead of TCP.
enable-proxy-connections: false

# The internet supports a maximum MTU of 1492 but could cause issues with packet fragmentation.
# 1400 is the default.
mtu: 1400

# Whether to connect directly into the Java server without creating a TCP connection.
# This should only be disabled if a plugin that interfaces with packets or the network does not work correctly with Geyser.
# If enabled on plugin versions, the remote address and port sections are ignored
# If disabled on plugin versions, expect performance decrease and latency increase
use-direct-connection: true

# Whether Geyser should attempt to disable compression for Bedrock players. This should be a benefit as there is no need to compress data
# when Java packets aren't being handled over the network.
# This requires use-direct-connection to be true.
disable-compression: true

config-version: 4


what you want to modify is the port variable (line 19) to your allocated port in the network tab, here a tutorial on how to

Screenshot 2024-01-02 222919.png

the auth-type variable (line 53) should be set to "floodgate".

 

Now you are done, try & join

Geyser + Floodgate

Velocity

Make sure to not be using "NONE" forwarding

You'll need an extra port for this tutorial

1. On Velocity

Go in your file manager

Go in plugins folder, upload GeyserMC and Floodgate

Restart the server

Go back in the plugins folder

Click on the "Geyser-Velocity" folder

in the Geyser folder, click on config.yml

in bedrock.port set that to your extra port

then, scroll down to remote.auth-type

set auth-type to floodgate.

In floodgate:

set set-floodgate-data to true.

2. On Backend (Spigot/Paper)

On all of your backend servers, upload Floodgate-Spigot in the plugins folder

restart the server to load the plugin

download the key.pem from Velocity's Floodgate

upload the downloaded key.pem in the Floodgate-Spigot's folder (on your backend)


Simple Voice Chat

Simple Voice Chat

Standalone (Spigot/Paper & Forks)

1. Download

Download Simple Voice Chat (Bukkit)

You need the Fabric/Forge version on your client

You need an extra port allocation

2. Login & Place The Plugin

Log in the panel

  1. Go in the file manager
  2. click on the folder named "plugins"

panel2.png

2a. Inside the plugins folder upload the file:

svc_upload.png

2b. Restart the server in the console tab

restart.png

2c. Return to the plugins folder as you did in step 2.

3. Configuring

In the plugins folder, you should now see a "voicechat" folder. Click on it

voicechat_s.png

Inside you'll find the file "voicechat-server.properties", click on it

On line 5 you'll find the port variable and a predefined value (24454) change it to the extra port allocation you made, change the port variable's value to your extra port.

Simple Voice Chat

Velocity

You'll need extra ports for this tutorial. 1 for each server with voicechat plugin.

1. Every server on the same node

On The Backends:

Download SimpleVoiceChat Bukkit

Go to the "plugins" folder and upload it.

Restart the server.

Inside the "plugins" folder, you will find a "voicechat" folder. Click on it.

Open the "voicechat.properties" file.

On line 5 you'll find the port variable. Set it to the additional port's value

On The Proxy:

Install SimpleVoiceChat for Velocity

The plugin will automatically detect the port of each voice chat server and will forward everything to the correct destination.

2. Servers on different nodes

Follow the steps for "Every server on the same node" and:

set voice_host on the backend servers to their (the backend's) actual IPv4

Chunky

Chunky

Pre-generate world

What is Chunky?

Chunky is a Minecraft plugin that lets you pregenerate your world’s chunks, reducing the load on your CPU for future tasks.

How to use Chunky?

Installation

1. Download Chunky (make sure you choose the correct version and the compatible platform for the jar file)

2. Upload Chunky on the mods or plugins folder (Forge/Fabric and Spigot/Paper respectively)

3. Restart your server

Usage

Let's start by choosing a radius for the pregeneration task, the command's format should be the following:
chunky radius <int>  where <int> is an integer such as: 100, 3300, 60000 and so on

(Optional) If you don't want to pregenerate the default world (usually the world named "world" unless modified) you can run the following command: chunky world <String> where <String> can be world_the_end, world_nether, bedwars_map, skyblock, spawn and so on, make sure that the world exists.

To start the pregeneration, use the command chunky start 

To stop the pregeneration, use the command chunky cancel

Additional Information

If you want to pause the pregeneration, run the command chunky pause, to exit the pause you can run the command chunky continue.

Do you think the plugin is sending too many logs in the console? You can use the command chunky quiet <int> where <int> is the frequency in seconds of the progress, example values: 5, 8, 20.

If you don't want to see the logs at all, use the command chunky silent (run the command again to see the logs).

If using Paper, you can adjust the number of worker threads used by world generation to speed up the task. This can be done by setting in config/paper-global.yml via the worker-threads option within paper-global.yml.

Don't pregenerate an exaggerated radius for your wolrd, please check out the following website to see what the approximate size your world's going to be after pregeneration: World Size Calculator.

 

 

FreedomChat

FreedomChat

Disable Chat Signing - Paper

What is chat signing?

Chat signing is a feature introduced by Mojang in the 1.19 update that links every message you send to your Minecraft account. This allows messages to be directly reportable to the Mojang Moderation team if needed.

Why disable chat signing?

Chat signing introduced the common chat message validation failure error that many players encounter, often resulting in players being kicked from the server. By disabling chat signing, you can prevent this error and stop players from getting disconnected. Additionally, turning off chat signing removes the server-side reporting system, which means players won’t be able to report messages through Mojang’s moderation tools.

How to disable chat signing?

On Paper (and Spigot's forks): 

1. Disable enforce-secure-profiles in server.properties through the Files Manager

Image2.jpg

2. Download FreedomChat (choose the version compatible with yours)

image.jpg

3. Upload FreedomChat in the plugins folder through the Files Manager

Image1.jpg

screenshot-2024-11-01-083245.png

 

Delete Player Data

Delete Player Data

How to delete player data

Where is it stored?

In the Files Manager, open the world folder (or the folder of your main world). Inside, locate the playerdata folder. Within this folder, you’ll find files named in the format <uuid>.dat, where <uuid> represents the player's UUID (universally unique id).

Plugin stored data:

Some plugins store some of the player's data, such as EssentialsX, in this scenario the plugin's data is stored in the following path: plugins\Essentials\userdata, so the path would be plugins\<Plugin Name>\<data folder/file>

How to recognize a data file/folder?

Usually local storages use the .db file extension, example: luckperms-h2-v2.mv.db

In other cases storage files may use the following file extension: .json | .yml | .conf | .toml Do note that these are locally stored databases.

For external Databases such as MariaDB/MySQL, delete the database from the panel and create a new one. Ensure sure to reconfigurate the credentials within your plugin's configuration.

How To Admin

How To Admin

Files and Commands - Vanilla

Do note that the information here is based on the default files and folders provided by Mojang

Files

In this section you'll learn what a folder or a file is for.

Importance is divided in the following way: Low, Medium, High, Essential

Low: Not something you'll be using at all or doesn't cause issues at all

Medium: Something you may use/the server uses it or may cause a few issues

High: Important information stored within it, deleting may lead to server corruption or other issues

Essential: needed for the server to run, the server won't run without it

File/Folder name
Description
Importance
libraries A folder. It store libraries for your server, it's preferred to not delete these as they are needed for the server, nothing will happen if you delete them as they'll regenerate themselves. Don't delete while server's running Low
.cache A folder. Cache, stores data temporarily, preferrably keep it. Don't delete while server's running Medium
logs A folder. Stores your server's logs, by deleting it once in a while you can save up some storage. Low
versions A folder. As long as the server.jar is in the main directory, it won't cause issues deleting it. It'll autoregenerate. Don't delete while server's running Medium
world A folder. Don't delete it, it contains some player data, datapack if added and your worlds' data. High

banned-ips.json

banned-players.json

Both are files. You usually don't delete these unless you want to unban every person who has been banned in the past Medium
server,jar A file. Don't delete, it's your server's core Essential


Commands

The following table contains "essential" or useful commands which a server administrator should be aware of.

Command Description Usage

/op 

/deop

Allows you to execute any command available within the server

(if op-permission-level in server.properties is 4 (default value))

/op <username>

/deop <username>

/op MelonOof

/deop MelonOof

/gamemode Change yout gamemode to one of the following: survival, creative, spectator and adventure.

/gamemode <gamemode>

/gamemode survival

/gamemode creative

/gamemode adventure
/gamemode spectator

/stop This command will stop your server (works the same way as the stop button in the panel's console) /stop
/restart This command will restart your server (works the same way as the restart button in the panel's console) /restart
/whitelist The command itself doesn't do anything, you need additional arguments for it to work, you can toggle on/off whitelist, add and remove players from whitelist

/whitelist on      ||    /whitelist off

/whitelist add <username>

/whitelist add MelonOof

/whitelist remove <username>

/whitelist remove MelonOof

/whitelist list

/worldborder

Manage the world border.

With this command you can:
Increases or decreases the world border diameter; Recenter the world boundary and a lot more

/worldborder add <diameter>

/worldborder set <diameter>

/worldborder get

/ban Ban players permanently from your server

/ban <username> [<reason>] The ban's reason is optional

/ban MelonOof Too Juicy with this command, the player MelonOof is getting banned because of the following reason: "Too Juicy"

/pardon Unban players from your server

/pardon <username>

/pardon MelonOof

/setworldspawn Set the server's default (re)spawn point the the location you are at /setworldspawn

/tp

/teleport

Teleport to a location, teleport a player to a location or teleport to a player

/tp <x> <y> <z>

/tp <username> <x> <y> <z>

/tp <username> <username>

/weather Sets the weather to one of the following clear|rain|thunder with an optional duration in ticks (1 second = 20 ticks)

/weather <weather> [<duration>]

/weather clear 200 sets the weather to clear for 10 seconds

/give Give yourself or someone else one or multiple items /give <username> <item> [<amount>]
/help Get to know about any other command you may need, the ones listed here are the essential ones for a server administrator /help
How To Admin

Essential plugins for your server - Paper

Server Core

EssentialsX: EssentialsX is a free and open-source plugin, it's been in the community since 2015, it's well known for being feature rich and constantly updated

zEssentials: A paid and open-source alternative, it's been developed in 2024, by Maxlego08. It supports both Paper and Folia, it provides similiar features to EssentialsX's and a modular structure (you enable and disable what you need)

Ban System

AdvancedBan: AdvancedBan is a free and open-source plugin developed since 2015, its last update was on October 2020. It offers database support and discord hooks through addons. It is still compatible with Paper 1.21+

AdvancedBanX: A fork of AdvancedBan, which is also free and open source, as of 2024, it's being actively developed on to provide more features, it works with AdvancedBan's addons.

BanManager: An AdvancedBan(X) free and open-source alternative offering a web interface for both admins and players.

LiteBans; A paid close-source plugin offering a web interface. As of 2024 it is being actively developed on.

Economy

Vault: Vault in itself is not an Economy plugin, rather it allows the usage of various economy plugins by hooking them into it. This plugin is quite essential for today's servers, most economy related plugins use its API as a standard, for actual economy, the Server Core plugins support it.

PlayerPoints: Ever tought to have a second economy? PlayerPoints allows you to do so, offering great management over the economy. The configuration is simple and user friendly.

Permissions

LuckPerms: LuckPerms is a community standard as of 2024, providing seamless permission management through both in-game commands and a web interface.

Tab and Scoreboard

TAB: TAB is a free and open-source plugin developed by Neznamy, it offers various features and supports servers as old as Minecraft Java 1.5.X, it's configuration is easy to understand and with great customizability.

AntiCheat:

Grim: Grim is one of the best free and open-source anticheats available within the community, offering various checks with the least false positive possible.

NoCheatPlus: NoCheatPlus is a great free and open-source plugin, it offers great customizability and various checks with partial support for Geyser (bedrock players).

Vulcan: Vulcan is a paid anticheat sold for about $20, it's said to be one of the best anticheats available on the market

Polar: Polar anticheat is a subscription based anticheat offering great combat checks for 1.8.X

Combat Logging

CombatLogX: CombatLogX is a plugin developed by SirBlobman (affiliated with the AlienUniverse brand). The plugin offers various hooks for plugins such as PlaceholderAPI and WorldGuard.

NPCs

Citizens: Citizens is a feature rich open source plugin, supporting various entities and paths, it hooks into Dnizen for npc scripting and much more.

ZNPCsPlus: ZNPCsPlus is a fork a ZNPCs, ZNPCsPlus is a minimalistic, performance focused plugin, in comparison to Citizens it's much more lightweight, but offers less features. Great for lobbies

Placeholders

PlaceholderAPI: PlaceholderAPI is a community standard plugin, providing support for placeholders hence allowing dynamic values. Most plugins support it, it offers various expansions and is actively developed.

Menu Creation

DeluxeMenus: DeluxeMenus allows administrators to create inventory menus easily with a crystal clear wiki and a great discord based support for fast answers and much more

zMenu: zMenu is a DeluxeMenus alternative offering more or less the same features, it supports most of DeluxeMenus' syntax. In addition it comes with a web based user interface for menu creation.

Plan

Plan

Plan - Paper

What is Plan?

Plan is a plugin that provides detailed analytics for Minecraft servers, tracking player activity, server performance, and engagement. It features a web-based dashboard, multi-server support, and integrations with popular plugins. Ideal for monitoring server health, understanding player behavior, and improving retention, it helps server admins make data-driven decisions.

Requirements

Additional port (or network allocation)

Java 11+

Installation

Download Plan

Place Plan.jar to the plugin directory through the file manager

image.png

Restart the server to load the folder

The default port for the webserver set  in the config is 8804 (line 44), change it to the one allocated in the requirements section.

Change the IP Address through Webserver.Alternative_IP field

image.png

Restart the server

image.png

Access The Web Interface

Now go on your web browser and look for http://{yourdomain.com}:{port}

replace {yourdomain.com}:port with your server's actual domain/ip address and port

image.png


Plan

Plan - Velocity

What is Plan?

Plan is a plugin that provides detailed analytics for Minecraft servers, tracking player activity, server performance, and engagement. It features a web-based dashboard, multi-server support, and integrations with popular plugins. Ideal for monitoring server health, understanding player behavior, and improving retention, it helps server admins make data-driven decisions.

Requirements

Additional port (or network allocation)

Java 11+

MySQL database

Installation On Proxy

Download Plan

Place Plan.jar to the plugin directory through the file manager

image.png

Default Webserver Port in the config is 8804, change it to the one allocated.

Change the IP Address through Webserver.Alternative_IP field (don't remove %port% as it automatically hooks to the chosen port).

image.png

Set Server.IP to a domain which is actively pointing at your minecraft server

Edit Database.MYSQL fileds appropriately

image.png

Installation On Backends

Place Plan.jar to the plugin directory through the file manager

Edit Database.MYSQL fileds and Database.Type appropriately. Note:  They must be the same as the proxy'simage.png

Disable the webserver on the backends by setting true the Disable_Webserver

image.png

Restart the server or reload the plugin.

Access The Web Interface

Now go on your web browser and input http://{yourdomain.com}:{port}

replace {yourdomain.com}:port with your server's actual domain/ip address and port

image.png


Dynmap

Dynmap

Installation and usage

Prerequisites

Spigot/Paper 1.10.2+ (This guide makes use of 1.19.4)

Java 11+ (This guide makes use of Java 17+)

Screenshot 2024-12-16 205723.png


Additional port allocation (In this guide the port is 25663)

Screenshot 2024-12-16 204918.png


Free storage (a lot)


Installation

Download dynmap 

Upload it in the plugins folder, from the File Manager.

Screenshot 2024-12-16 210245.png

(Re)start the server to load the plugin. You'll know it loaded successfully if it generated a folder named "dynmap"

image.png


Web Server

In the Configuration.txt, located at plugins/dynmap/Configuration.txt:

Screenshot 2024-12-16 210834.png

Find (use CTRL + F shortcut) webserver-port field within the file.

image.png

Change the port's value to your additional port allocation's value.

image.png

Restart the server to apply the changes

Dynmap

Changing Storage Type (Optimization)

What is this chapter about?

In this chapter I'll help you optimize Dynmap. The default configuration is not the best, it can be improved and that's what we are doing.

Changing Storage Provider

By default the storage type is set to filetree (As shown by the following image).

The configuration is located at plugins/dynmap/configuration.txt.

Screenshot 2024-12-22 203133.png

SQLite

We would suggest you to switch over to SQLite if you were using the default filetree storage.

Screenshot 2025-01-03 163633.png

MySQL

Another option is MySQL we don't really suggest you to use this for DynMap due to network latency and other external factors

Screenshot 2024-12-22 205312.png

Dynmap

Changing the resolution of the map (Optimization)

Possible values

Description

vlowres Uses the HDMap renderer with view from the SE with the "vlowres" resolution (2 pixels per block edge)
lowres Uses the HDMap renderer with view from the SE with the "lowres" resolution (4 pixels per block edge)
hires Uses the HDMap renderer with view from the SE with the "hires" resolution (16 pixels per block edge)
low_boost_hi Uses the HDMap renderer with view from the SE with the "lowres" resolution (4 pixels per block edge), with boosted tiles
rendered at "hires" (16 pixels per block edge)
hi_boost_vhi Uses the HDMap renderer with view from the SE with the "hires" resolution (16 pixels per block edge), with resolution boosted
tiles rendered at 'vhires' resolution (32 pixels perblock edge)
hi_boost_xhi Uses the HDMap renderer with view from the SE with the "hires" resolution (16 pixels per block edge), with resolution boosted
tiles rendered at 'xhires' resolution (64 pixels perblock edge)

Brief Explanation

These values allow you to either save storage (vlowres saves the most) or have a high quality map (hi_boost_xhi provides the best quality/resolution for the map).

Which option should I choose?

The default value is hires. That probably works for most server owners. But for those who lack storage, they may be prompted to pick a "storafe saver" option such as vlowres or lowres.

Additionally High Resolution maps take a lot of time to render (and an exhorbitant amount of storage).

Where and how to change the resolution

Through the use of the File Manager, reach the following path:  /home/container/plugins/dynmap (NOTE: This is the path for Spigot/Paper servers. These are all folders), where you'll find a text file named configuration.txt. Open it.

Screenshot 2025-01-03 171010.png

Now change deftemplatesuffix with one of the values given at the beggining of this article. Save the file with the Save content button and restart the server through the console.

Examples

Very Low Resolution:

image.png


Low Resolution:

image.png