Browse Source

add more to timings_check .yml

master
granny 4 years ago
parent
commit
3d45c2d8a4
  1. 268
      cogs/timings.py
  2. 311
      cogs/timings_check.yml

268
cogs/timings.py

@ -65,62 +65,35 @@ class Timings(commands.Cog):
try:
version = r["timingsMaster"]["version"].lower()
if "version" in TIMINGS_CHECK:
if TIMINGS_CHECK["version"] in version:
if TIMINGS_CHECK["version"] not in version:
embed_var.add_field(name="❌ Legacy Build",
value="Update to " + TIMINGS_CHECK["server"]["version"])
value="Update to " + TIMINGS_CHECK["version"])
if "servers" in TIMINGS_CHECK:
for server in TIMINGS_CHECK["servers"]:
if server["name"] in version:
embed_var.add_field(**create_field(server))
break
except KeyError:
unchecked = unchecked + 1
try:
if "config" in TIMINGS_CHECK:
server_properties = None
bukkit = None
spigot = None
paper = None
purpur = None
if "server.properties" in r["timingsMaster"]["config"]:
server_properties = r["timingsMaster"]["config"]["server.properties"]
if "bukkit" in r["timingsMaster"]["config"]:
bukkit = r["timingsMaster"]["config"]["bukkit"]
if "spigot" in r["timingsMaster"]["config"]:
spigot = r["timingsMaster"]["config"]["spigot"]
if "paper" in r["timingsMaster"]["config"]:
paper = r["timingsMaster"]["config"]["paper"]
if "purpur" in r["timingsMaster"]["config"]:
purpur = r["timingsMaster"]["config"]["purpur"]
for config_name in TIMINGS_CHECK["config"]:
config = TIMINGS_CHECK["config"][config_name]
for option_name in config:
option = config[option_name]
for expression in option["expressions"]:
if not eval(expression):
continue
embed_var.add_field(**create_field({**{"name": option_name}, **option}))
except KeyError:
unchecked = unchecked + 1
except KeyError as key:
print("Missing: " + str(key))
unchecked += 1
try:
timing_cost = int(r["timingsMaster"]["system"]["timingcost"])
if timing_cost > 300:
embed_var.add_field(name="❌ Timingcost",
value="Your timingcost is " + str(timing_cost) + ". Find a [better host](https://www.birdflop.com).")
except KeyError:
unchecked = unchecked + 1
except KeyError as key:
print("Missing: " + str(key))
unchecked += 1
try:
jvm_version = r["timingsMaster"]["system"]["jvmversion"]
if jvm_version.startswith("1.8.") or jvm_version.startswith("9.") or jvm_version.startswith("10."):
embed_var.add_field(name="❌ Java Version",
value="You are using Java " + jvm_version + ". Update to [Java 11](https://adoptopenjdk.net/installation.html).")
except KeyError:
unchecked = unchecked + 1
except KeyError as key:
print("Missing: " + str(key))
unchecked += 1
try:
flags = r["timingsMaster"]["system"]["flags"]
@ -169,8 +142,10 @@ class Timings(commands.Cog):
else:
embed_var.add_field(name="❌ Aikar's Flags",
value="Use [Aikar's flags](https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/).")
except KeyError:
unchecked = unchecked + 1
except KeyError as key:
print("Missing: " + str(key))
unchecked += 1
try:
cpu = int(r["timingsMaster"]["system"]["cpu"])
if cpu == 1:
@ -179,162 +154,52 @@ class Timings(commands.Cog):
if cpu == 2:
embed_var.add_field(name="❌ Threads",
value="You have only " + str(cpu) + " threads. Find a [better host](https://www.birdflop.com).")
except KeyError:
unchecked = unchecked + 1
try:
plugins = r["timingsMaster"]["plugins"]
if not YAML_ERROR:
except KeyError as key:
print("Missing: " + str(key))
unchecked += 1
plugins = r["timingsMaster"]["plugins"] if "plugins" in r["timingsMaster"] else None
server_properties = r["timingsMaster"]["config"]["server.properties"] if "server.properties" in r["timingsMaster"]["config"] else None
bukkit = r["timingsMaster"]["config"]["bukkit"] if "bukkit" in r["timingsMaster"]["config"] else None
spigot = r["timingsMaster"]["config"]["spigot"] if "spigot" in r["timingsMaster"]["config"] else None
paper = r["timingsMaster"]["config"]["paper"] if "paper" in r["timingsMaster"]["config"] else None
purpur = r["timingsMaster"]["config"]["purpur"] if "purpur" in r["timingsMaster"]["config"] else None
if not YAML_ERROR:
if "plugins" in TIMINGS_CHECK:
for server_name in TIMINGS_CHECK["plugins"]:
if server_name in r["timingsMaster"]["config"]:
for plugin in plugins:
for plugin_name in TIMINGS_CHECK["plugins"][server_name]:
if plugin == plugin_name:
stored_plugin = TIMINGS_CHECK["plugins"][server_name][plugin_name]
stored_plugin["name"] = plugin_name
embed_var.add_field(**create_field(stored_plugin))
else:
embed_var.add_field(name="Error loading YAML file",
value=YAML_ERROR)
for plugin in plugins:
if "songoda" in r["timingsMaster"]["plugins"][plugin]["authors"].casefold():
if plugin == "EpicHeads":
embed_var.add_field(name="❌ EpicHeads",
value="This plugin was made by Songoda. Songoda resources are poorly developed and often cause problems. You should find an alternative such as [HeadsPlus](spigotmc.org/resources/headsplus-»-1-8-1-16-4.40265/) or [HeadDatabase](https://www.spigotmc.org/resources/head-database.14280/).")
elif plugin == "UltimateStacker":
embed_var.add_field(name="❌ UltimateStacker",
value="Stacking plugins actually causes more lag. "
"Remove UltimateStacker.")
else:
embed_var.add_field(name="" + plugin,
value="This plugin was made by Songoda. Songoda resources are poorly developed and often cause problems. You should find an alternative.")
except KeyError:
unchecked = unchecked + 1
try:
plugins = r["timingsMaster"]["plugins"]
if "PhantomSMP" in plugins:
phantoms_only_insomniacs = r["timingsMaster"]["config"]["paper"]["world-settings"]["default"][
"phantoms-only-attack-insomniacs"]
if phantoms_only_insomniacs == "false":
embed_var.add_field(name="❌ PhantomSMP",
value="You probably don't need PhantomSMP as Paper already has its features. "
"Remove PhantomSMP.")
else:
embed_var.add_field(name="❌ PhantomSMP",
value="You probably don't need PhantomSMP as Paper already has its features. "
"Enable phantoms-only-attack-insomniacs in paper.yml.")
except KeyError:
unchecked = unchecked + 1
try:
network_compression_threshold = int(
r["timingsMaster"]["config"]["server.properties"]["network-compression-threshold"])
bungeecord = r["timingsMaster"]["config"]["spigot"]["settings"]["bungeecord"]
if network_compression_threshold <= 256 and bungeecord == "false":
embed_var.add_field(name="❌ network-compression-threshold",
value="Increase this in server.properties. Recommended: 512.")
if network_compression_threshold != -1 and bungeecord == "true":
embed_var.add_field(name="❌ network-compression-threshold",
value="Set this to -1 in server.properties for a bungee server like yours.")
except KeyError:
unchecked = unchecked + 1
try:
mob_spawn_range = int(r["timingsMaster"]["config"]["spigot"]["world-settings"]["default"]["mob-spawn-range"])
spigot_view_distance = r["timingsMaster"]["config"]["spigot"]["world-settings"]["default"]["view-distance"]
if spigot_view_distance == "default":
view_distance = int(r["timingsMaster"]["config"]["server.properties"]["view-distance"])
if mob_spawn_range >= 8 and view_distance <= 6:
embed_var.add_field(name="❌ mob-spawn-range",
value="Decrease this in spigot.yml. "
"Recommended: " + str(view_distance - 1) + ".")
elif mob_spawn_range >= 8 and int(spigot_view_distance) <= 6:
embed_var.add_field(name="❌ mob-spawn-range",
value="Decrease this in spigot.yml. "
"Recommended: " + str(int(spigot_view_distance) - 1) + ".")
except KeyError:
unchecked = unchecked + 1
try:
raiders_entity_activation_range = int(
r["timingsMaster"]["config"]["spigot"]["world-settings"]["default"]["entity-activation-range"][
"raiders"])
except KeyError:
unchecked = unchecked + 1
try:
flying_monsters_entity_activation_range = int(
r["timingsMaster"]["config"]["spigot"]["world-settings"]["default"]["entity-activation-range"][
"flying-monsters"])
except KeyError:
unchecked = unchecked + 1
try:
wake_up_inactive_villagers_every = int(
r["timingsMaster"]["config"]["spigot"]["world-settings"]["default"]["entity-activation-range"][
"wake-up-inactive"]["villagers-every"])
except KeyError:
unchecked = unchecked + 1
try:
wake_up_inactive_animals_every = int(
r["timingsMaster"]["config"]["spigot"]["world-settings"]["default"]["entity-activation-range"][
"wake-up-inactive"]["animals-every"])
except KeyError:
unchecked = unchecked + 1
try:
wake_up_inactive_flying_monsters_every = int(
r["timingsMaster"]["config"]["spigot"]["world-settings"]["default"]["entity-activation-range"][
"wake-up-inactive"]["flying-monsters-every"])
except KeyError:
unchecked = unchecked + 1
try:
wake_up_inactive_monsters_every = int(
r["timingsMaster"]["config"]["spigot"]["world-settings"]["default"]["entity-activation-range"][
"wake-up-inactive"]["monsters-every"])
except KeyError:
unchecked = unchecked + 1
try:
no_tick_view_distance = int(
r["timingsMaster"]["config"]["paper"]["world-settings"]["default"]["viewdistances"][
"no-tick-view-distance"])
if no_tick_view_distance == -1:
spigot_view_distance = r["timingsMaster"]["config"]["spigot"]["world-settings"]["default"][
"view-distance"]
if spigot_view_distance == "default":
view_distance = int(r["timingsMaster"]["config"]["server.properties"]["view-distance"])
if view_distance >= 4:
embed_var.add_field(name="❌ no-tick-view-distance",
value="Set a value in paper.yml. "
"Recommended: " + str(view_distance) + ". And reduce view-distance in server.properties. Recommended: 3.")
elif int(spigot_view_distance) >= 4:
embed_var.add_field(name="❌ no-tick-view-distance",
value="Set a value in paper.yml. "
"Recommended: " + spigot_view_distance + ". And reduce view-distance in spigot.yml. Recommended: 3.")
except KeyError:
unchecked = unchecked + 1
try:
use_alternate_keepalive = r["timingsMaster"]["config"]["purpur"]["settings"]["use-alternate-keepalive"]
plugins = r["timingsMaster"]["plugins"]
if use_alternate_keepalive == "false" and "TCPShield" not in plugins:
embed_var.add_field(name="❌ use-alternate-keepalive",
value="Enable this in purpur.yml.")
if use_alternate_keepalive == "true" and "TCPShield" in plugins:
embed_var.add_field(name="❌ use-alternate-keepalive",
value="Disable this in purpur.yml. It causes issues with TCPShield.")
except KeyError:
unchecked = unchecked + 1
if isinstance(stored_plugin, dict):
stored_plugin["name"] = plugin_name
embed_var.add_field(**create_field(stored_plugin))
else:
eval_field(embed_var, stored_plugin, plugin_name, unchecked, plugins, server_properties, bukkit, spigot, paper, purpur)
if "songoda" in r["timingsMaster"]["plugins"][plugin]["authors"].casefold():
if plugin == "EpicHeads":
embed_var.add_field(name="❌ EpicHeads",
value="This plugin was made by Songoda. Songoda resources are poorly developed and often cause problems. You should find an alternative such as [HeadsPlus](spigotmc.org/resources/headsplus-»-1-8-1-16-4.40265/) or [HeadDatabase](https://www.spigotmc.org/resources/head-database.14280/).")
elif plugin == "UltimateStacker":
embed_var.add_field(name="❌ UltimateStacker",
value="Stacking plugins actually causes more lag. "
"Remove UltimateStacker.")
else:
embed_var.add_field(name="" + plugin,
value="This plugin was made by Songoda. Songoda resources are poorly developed and often cause problems. You should find an alternative.")
if "config" in TIMINGS_CHECK:
for config_name in TIMINGS_CHECK["config"]:
config = TIMINGS_CHECK["config"][config_name]
for option_name in config:
option = config[option_name]
eval_field(embed_var, option, option_name, unchecked, plugins, server_properties, bukkit, spigot, paper, purpur)
else:
embed_var.add_field(name="Error loading YAML file",
value=YAML_ERROR)
except ValueError:
except ValueError as bruh:
print(bruh)
embed_var.add_field(name="❌ Invalid Configuration",
value="At least one of your configuration files had an invalid data type.")
@ -348,9 +213,32 @@ class Timings(commands.Cog):
if issue_count >= 25:
embed_var.insert_field_at(index=24, name="Plus " + str(issue_count - 24) + " more recommendations", value="Create a new timings report after resolving some of the above issues to see more.")
if unchecked > 0:
embed_var.description = "||" + str(unchecked) + " missing configuration optimizations due to your server version.||"
embed_var.description = "||" + str(unchecked) + " missing configuration optimizations.||"
await message.reply(embed=embed_var)
def eval_field(embed_var, option, option_name, unchecked, plugins=None, server_properties=None, bukkit=None, spigot=None, paper=None, purpur=None):
try:
for option_data in option:
add_to_field = True
for expression in option_data["expressions"]:
if ("server_properties" in expression and server_properties or
"bukkit" in expression and bukkit or
"spigot" in expression and spigot or
"paper" in expression and paper or
"purpur" in expression and purpur or
"plugins" in expression and plugins):
if not eval(expression):
add_to_field = False
break
if add_to_field:
""" f strings don't like newlines so we replace the newlines with placeholder text before we eval """
option_data["value"] = eval('f"""' + option_data["value"].replace("\n", "\\|n\\") + '"""').replace("\\|n\\", "\n")
embed_var.add_field(**create_field({**{"name": option_name}, **option_data}))
break
except KeyError as key:
print("Missing: " + str(key))
unchecked += 1
def create_field(option):
field = {"name": option["name"],
"value": option["value"]}

311
cogs/timings_check.yml

@ -1,160 +1,179 @@
---
# raiders_entity_activation_range = int(spigot["world-settings"]["default"]["entity-activation-range"]["raiders"])
# flying_monsters_entity_activation_range = int(spigot["world-settings"]["default"]["entity-activation-range"]["flying-monsters"])
# wake_up_inactive_villagers_every = int(spigot["world-settings"]["default"]["entity-activation-range"]["wake-up-inactive"]["villagers-every"])
# wake_up_inactive_animals_every = int(spigot["world-settings"]["default"]["entity-activation-range"]["wake-up-inactive"]["animals-every"])
# wake_up_inactive_flying_monsters_every = int(spigot["world-settings"]["default"]["entity-activation-range"]["wake-up-inactive"]["flying-monsters-every"])
# wake_up_inactive_monsters_every = int(spigot["world-settings"]["default"]["entity-activation-range"]["wake-up-inactive"]["monsters-every"])
version: "1.16.4"
servers:
- name: "yatopia"
prefix: "❌ "
value: |-
"Yatopia is prone to bugs."
"Consider using [Purpur](https://ci.pl3x.net/job/Purpur/)."
Yatopia is prone to bugs.
Consider using [Purpur](https://ci.pl3x.net/job/Purpur/).
- name: "paper"
prefix: "||❌ "
suffix: "||"
value: |-
"||Purpur has more optimizations but is generally less supported. "
"Consider using [Purpur](https://ci.pl3x.net/job/Purpur/).||"
||Purpur has more optimizations but is generally less supported.
Consider using [Purpur](https://ci.pl3x.net/job/Purpur/).||
plugins:
paper:
ClearLag:
prefix: "⚠ "
value: |-
"Plugins that claim to remove lag actually cause more lag. "
"Remove ClearLag."
Plugins that claim to remove lag actually cause more lag.
Remove ClearLag.
LagAssist:
prefix: "⚠ "
value: |-
"LagAssist should only be used for analytics and preventative measures."
"All other features of the plugin should be disabled."
LagAssist should only be used for analytics and preventative measures.
All other features of the plugin should be disabled.
NoChunkLag:
prefix: "⚠ "
value: |-
"Plugins that claim to remove lag actually cause more lag. "
"Remove NoChunkLag."
Plugins that claim to remove lag actually cause more lag.
Remove NoChunkLag.
ServerBooster:
prefix: "⚠ "
value: |-
"Plugins that claim to remove lag actually cause more lag. "
"Remove ServerBooster."
Plugins that claim to remove lag actually cause more lag.
Remove ServerBooster.
MobLimiter:
prefix: "⚠ "
value: |-
"You probably don't need MobLimiter as Bukkit already has its features. "
"Remove MobLimiter."
You probably don't need MobLimiter as Bukkit already has its features.
Remove MobLimiter.
BookLimiter:
prefix: "⚠ "
value: |-
"You probably don't need BookLimiter as Paper already has its features. "
"Remove BookLimiter."
You probably don't need BookLimiter as Paper already has its features.
Remove BookLimiter.
LimitPillagers:
prefix: "⚠ "
value: |-
"You probably don't need LimitPillagers as Paper already adds its features. "
"Remove LimitPillagers."
You probably don't need LimitPillagers as Paper already adds its features.
Remove LimitPillagers.
VillagerOptimiser:
prefix: "⚠ "
value: |-
"You probably don't need VillagerOptimiser as Paper already adds its features. "
"See entity-activation-range in spigot.yml."
You probably don't need VillagerOptimiser as Paper already adds its features.
See entity-activation-range in [spigot.yml](http://bit.ly/spiconf).
StackMob:
prefix: "⚠ "
value: |-
"Stacking plugins actually cause more lag. "
"Remove StackMob."
Stacking plugins actually cause more lag.
Remove StackMob.
Stacker:
prefix: "⚠ "
value: |-
"Stacking plugins actually cause more lag. "
"Remove Stacker."
Stacking plugins actually cause more lag.
Remove Stacker.
MobStacker:
prefix: "⚠ "
value: |-
"Stacking plugins actually cause more lag. "
"Remove MobStacker."
Stacking plugins actually cause more lag.
Remove MobStacker.
WildStacker:
prefix: "⚠ "
value: |-
"Stacking plugins actually cause more lag. "
"Remove WildStacker."
Stacking plugins actually cause more lag.
Remove WildStacker.
SuggestionBlocker:
prefix: "⚠ "
value: |-
"You probably don't need SuggestionBlocker as Spigot already adds its features. "
"Set tab-complete to -1 in spigot.yml."
You probably don't need SuggestionBlocker as Spigot already adds its features.
Set tab-complete to -1 in [spigot.yml](http://bit.ly/spiconf).
FastAsyncWorldEdit:
prefix: "⚠ "
value: |-
"FAWE can corrupt your world. "
"Consider replacing FAWE with [Worldedit](https://enginehub.org/worldedit/#downloads)."
FAWE can corrupt your world.
Consider replacing FAWE with [Worldedit](https://enginehub.org/worldedit/#downloads).
CMI:
prefix: "⚠ "
value: |-
"CMI is a buggy plugin. "
"Consider replacing CMI with [EssentialsX](https://essentialsx.net/downloads.html)."
CMI is a buggy plugin.
Consider replacing CMI with [EssentialsX](https://essentialsx.net/downloads.html).
Spartan:
prefix: "⚠ "
value: |-
"Spartan is a laggy anticheat. "
"Consider replacing it with [Matrix](https://matrix.rip/), [NCP](https://ci.codemc.io/job/Updated-NoCheatPlus/job/Updated-NoCheatPlus/), or [AAC](https://www.spigotmc.org/resources/aac-advanced-anti-cheat-hack-kill-aura-blocker.6442/)."
Spartan is a laggy anticheat.
Consider replacing it with [Matrix](https://matrix.rip/), [NCP](https://ci.codemc.io/job/Updated-NoCheatPlus/job/Updated-NoCheatPlus/), or [AAC](https://www.spigotmc.org/resources/aac-advanced-anti-cheat-hack-kill-aura-blocker.6442/).
IllegalStack:
prefix: "⚠ "
value: |-
"You probably don't need IllegalStack as Paper already has its features. "
"Remove IllegalStack."
You probably don't need IllegalStack as Paper already has its features.
Remove IllegalStack.
ExploitFixer:
prefix: "⚠ "
value: |-
"You probably don't need ExploitFixer as Paper already has its features. "
"Remove ExploitFixer."
You probably don't need ExploitFixer as Paper already has its features.
Remove ExploitFixer.
EntityTrackerFixer:
prefix: "⚠ "
value: |-
"You probably don't need EntityTrackerFixer as Paper already has its features. "
"Remove EntityTrackerFixer."
You probably don't need EntityTrackerFixer as Paper already has its features.
Remove EntityTrackerFixer.
Orebfuscator:
prefix: "⚠ "
value: |-
"You probably don't need Orebfuscator as Paper already has its features. "
"Remove Orebfuscator."
You probably don't need Orebfuscator as Paper already has its features.
Remove Orebfuscator.
ImageOnMap:
prefix: "⚠ "
value: |-
"This plugin has a [memory leak](https://github.com/zDevelopers/ImageOnMap/issues/104). If it is not essential, you should remove it. "
"Consider replacing it with [an alternative](https://www.spigotmc.org/resources/drmap.87368/)."
This plugin has a [memory leak](https://github.com/zDevelopers/ImageOnMap/issues/104). If it is not essential, you should remove it.
Consider replacing it with [an alternative](https://www.spigotmc.org/resources/drmap.87368/).
CrazyActions:
prefix: "⚠ "
value: |-
"CrazyAuctions is a laggy plugin, even according to the developer. "
"Consider replacing it with [AuctionHouse](https://www.spigotmc.org/resources/auctionhouse.61836/)."
CrazyAuctions is a laggy plugin, even according to the developer.
Consider replacing it with [AuctionHouse](https://www.spigotmc.org/resources/auctionhouse.61836/).
GroupManager:
prefix: "⚠ "
value: |-
"GroupManager is an outdated permission plugin. "
"Consider replacing it with [LuckPerms](https://ci.lucko.me/job/LuckPerms/1243/artifact/bukkit/build/libs/LuckPerms-Bukkit-5.2.77.jar)."
GroupManager is an outdated permission plugin.
Consider replacing it with [LuckPerms](https://ci.lucko.me/job/LuckPerms/1243/artifact/bukkit/build/libs/LuckPerms-Bukkit-5.2.77.jar).
PermissionsEx:
prefix: "⚠ "
value: |-
"PermissionsEx is an outdated permission plugin. "
"Consider replacing it with [LuckPerms](https://ci.lucko.me/job/LuckPerms/1243/artifact/bukkit/build/libs/LuckPerms-Bukkit-5.2.77.jar)."
PermissionsEx is an outdated permission plugin.
Consider replacing it with [LuckPerms](https://ci.lucko.me/job/LuckPerms/1243/artifact/bukkit/build/libs/LuckPerms-Bukkit-5.2.77.jar).
bPermissions:
prefix: "⚠ "
value: |-
"bPermissions is an outdated permission plugin. "
"Consider replacing it with [LuckPerms](https://ci.lucko.me/job/LuckPerms/1243/artifact/bukkit/build/libs/LuckPerms-Bukkit-5.2.77.jar)."
bPermissions is an outdated permission plugin.
Consider replacing it with [LuckPerms](https://ci.lucko.me/job/LuckPerms/1243/artifact/bukkit/build/libs/LuckPerms-Bukkit-5.2.77.jar).
PhantomSMP:
- expressions:
- paper["world-settings"]["default"]["phantoms-only-attack-insomniacs"] == "false"
prefix: "⚠ "
value: |-
You probably don't need PhantomSMP as Paper already has its features.
Remove PhantomSMP.
- expressions:
- paper["world-settings"]["default"]["phantoms-only-attack-insomniacs"] == "true"
prefix: "⚠ "
value: |-
You probably don't need PhantomSMP as Paper already has its features.
Enable phantoms-only-attack-insomniacs in [paper.yml](http://bit.ly/paperconf).
purpur:
SilkSpawners:
prefix: "⚠ "
value: |-
"You probably don't need SilkSpawners as Purpur already has its features. "
"Remove SilkSpawners."
You probably don't need SilkSpawners as Purpur already has its features.
Remove SilkSpawners.
MineableSpawners:
prefix: "⚠ "
value: |-
"You probably don't need MineableSpawners as Purpur already has its features. "
"Remove MineableSpawners."
You probably don't need MineableSpawners as Purpur already has its features.
Remove MineableSpawners.
VillagerLobotomizatornator:
prefix: "⚠ "
value: |-
"You probably don't need VillagerLobotomizatornator as Purpur already adds its features. "
"Enable villager.lobotomize.enabled in purpur.yml."
You probably don't need VillagerLobotomizatornator as Purpur already adds its features.
Enable villager.lobotomize.enabled in [purpur.yml](http://bit.ly/purpurc).
config:
server.properties:
online-mode:
@ -163,223 +182,244 @@ config:
- spigot["settings"]["bungeecord"] == "false"
- paper["settings"]["velocity-support"]["online-mode"] == "false" or paper["settings"]["velocity-support"]["enabled"] == "false"
prefix: "❌ "
value: "Enable this in server.properties for security."
value: "Enable this in [server.properties](http://bit.ly/servprop) for security."
network-compression-threshold:
- expressions:
- int(server_properties["network-compression-threshold"]) <= 256
- spigot["settings"]["bungeecord"] == "false"
prefix: "❌ "
value: "Increase this in [server.properties](http://bit.ly/servprop). Recommended: 512."
- expressions:
- int(server_properties["network-compression-threshold"]) != -1
- spigot["settings"]["bungeecord"] == "true"
prefix: "❌ "
value: "Set this to -1 in [server.properties](http://bit.ly/servprop) for a bungee server like yours."
bukkit:
chunk-gc.period-in-ticks:
- expressions:
- int(bukkit["chunk-gc"]["period-in-ticks"]) >= 600
prefix: "❌ "
value: "Decrease this in bukkit.yml.\nRecommended: 400."
value: "Decrease this in [bukkit.yml](https://bukkit.gamepedia.com/Bukkit.yml).\nRecommended: 400."
ticks-per.monster-spawns:
- expressions:
- int(bukkit["ticks-per"]["monster-spawns"]) == 1
prefix: "❌ "
value: "Increase this in bukkit.yml.\nRecommended: 4."
value: "Increase this in [bukkit.yml](https://bukkit.gamepedia.com/Bukkit.yml).\nRecommended: 4."
spawn-limits.monsters:
- expressions:
- int(bukkit["spawn-limits"]["monsters"]) >= 70
prefix: "❌ "
value: "Decrease this in bukkit.yml.\nRecommended: 15."
value: "Decrease this in [bukkit.yml](https://bukkit.gamepedia.com/Bukkit.yml).\nRecommended: 15."
spawn-limits.water-ambient:
- expressions:
- int(bukkit["spawn-limits"]["water-ambient"]) >= 20
prefix: "❌ "
value: "Decrease this in bukkit.yml.\nRecommended: 2."
value: "Decrease this in [bukkit.yml](https://bukkit.gamepedia.com/Bukkit.yml).\nRecommended: 2."
spawn-limits.ambient:
- expressions:
- int(bukkit["spawn-limits"]["ambient"]) >= 15
prefix: "❌ "
value: "Decrease this in bukkit.yml.\nRecommended: 1."
value: "Decrease this in [bukkit.yml](https://bukkit.gamepedia.com/Bukkit.yml).\nRecommended: 1."
spawn-limits.animals:
- expressions:
- int(bukkit["spawn-limits"]["animals"]) >= 10
prefix: "❌ "
value: "Decrease this in bukkit.yml.\nRecommended: 3."
value: "Decrease this in [bukkit.yml](https://bukkit.gamepedia.com/Bukkit.yml).\nRecommended: 3."
spawn-limits.water-animals:
- expressions:
- int(bukkit["spawn-limits"]["water-animals"]) >= 15
prefix: "❌ "
value: "Decrease this in bukkit.yml.\nRecommended: 2."
value: "Decrease this in [bukkit.yml](https://bukkit.gamepedia.com/Bukkit.yml).\nRecommended: 2."
spigot:
view-distance:
- expressions:
- server_properties["view-distance"] >= 10
- int(server_properties["view-distance"]) >= 10
- spigot["world-settings"]["default"]["view-distance"] == "default"
prefix: "❌ "
value: |-
"Decrease this from default (10) in spigot.yml. "
"Recommended: 3."
value: "Decrease this from default (10) in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 3."
entity-activation-range.animals:
- expressions:
- int(spigot["world-settings"]["default"]["entity-activation-range"]["animals"]) >= 32
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 6."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 6."
entity-activation-range.monsters:
- expressions:
- int(spigot["world-settings"]["default"]["entity-activation-range"]["monsters"]) >= 32
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 16."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 16."
entity-activation-range.misc:
- expressions:
- int(spigot["world-settings"]["default"]["entity-activation-range"]["misc"]) >= 16
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 4."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 4."
entity-activation-range.water:
- expressions:
- int(spigot["world-settings"]["default"]["entity-activation-range"]["water"]) >= 16
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 12."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 12."
entity-activation-range.villagers:
- expressions:
- int(spigot["world-settings"]["default"]["entity-activation-range"]["villagers"]) >= 32
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 16."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 16."
entity-activation-range.tick-inactive-villagers:
- expressions:
- spigot["world-settings"]["default"]["entity-activation-range"]["tick-inactive-villagers"] == "true"
prefix: "❌ "
value: "Disable this in spigot.yml."
value: "Disable this in [spigot.yml](http://bit.ly/spiconf)."
nerf-spawner-mobs:
- expressions:
- spigot["world-settings"]["default"]["nerf-spawner-mobs"] == "false"
prefix: "❌ "
value: "Enable this in spigot.yml."
value: "Enable this in [spigot.yml](http://bit.ly/spiconf)."
entity-activation-range.wake-up-inactive.villagers-for:
- expressions:
- int(spigot["world-settings"]["default"]["entity-activation-range"]["wake-up-inactive"]["villagers-for"]) >= 100
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 20."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 20."
entity-activation-range.wake-up-inactive.flying-monsters-for:
- expressions:
- int(spigot["world-settings"]["default"]["entity-activation-range"]["wake-up-inactive"]["flying-monsters-for"]) >= 100
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 60."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 60."
entity-activation-range.wake-up-inactive.villagers-max-per-tick:
- expressions:
- int(spigot["world-settings"]["default"]["entity-activation-range"]["wake-up-inactive"]["villagers-max-per-tick"]) >= 4
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 1."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 1."
entity-activation-range.wake-up-inactive.animals-for:
- expressions:
- int(spigot["world-settings"]["default"]["entity-activation-range"]["wake-up-inactive"]["animals-for"]) >= 4
- int(spigot["world-settings"]["default"]["entity-activation-range"]["wake-up-inactive"]["animals-for"]) >= 100
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 1."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 40."
entity-activation-range.wake-up-inactive.monsters-max-per-tick:
- expressions:
- int(spigot["world-settings"]["default"]["entity-activation-range"]["wake-up-inactive"]["monsters-max-per-tick"]) >= 8
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 4."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 4."
entity-activation-range.wake-up-inactive.flying-monsters-max-per-tick:
- expressions:
- int(spigot["world-settings"]["default"]["entity-activation-range"]["wake-up-inactive"]["flying-monsters-max-per-tick"]) >= 8
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 1."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 1."
entity-activation-range.wake-up-inactive.animals-max-per-tick:
- expressions:
- int(spigot["world-settings"]["default"]["entity-activation-range"]["wake-up-inactive"]["animals-max-per-tick"]) >= 4
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 2."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 2."
entity-activation-range.wake-up-inactive.monsters-for:
- expressions:
- int(spigot["world-settings"]["default"]["entity-activation-range"]["wake-up-inactive"]["monsters-for"]) >= 100
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 60."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 60."
arrow-despawn-rate:
- expressions:
- int(spigot["world-settings"]["default"]["arrow-despawn-rate"]) >= 1200
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 300."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 300."
merge-radius.item:
- expressions:
- float(spigot["world-settings"]["default"]["merge-radius"]["item"]) <= 2.5
prefix: "❌ "
value: "Increase this in spigot.yml.\nRecommended: 4.0."
value: "Increase this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 4.0."
merge-radius.exp:
- expressions:
- float(spigot["world-settings"]["default"]["merge-radius"]["exp"]) <= 3.0
prefix: "❌ "
value: "Increase this in spigot.yml.\nRecommended: 6.0."
value: "Increase this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 6.0."
max-entity-collisions:
- expressions:
- int(spigot["world-settings"]["default"]["merge-radius"]["exp"]) >= 8
- int(spigot["world-settings"]["default"]["max-entity-collisions"]) >= 8
prefix: "❌ "
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: 2."
mob-spawn-range:
- expressions:
- spigot["world-settings"]["default"]["view-distance"] == "default"
- int(spigot["world-settings"]["default"]["mob-spawn-range"]) >= 8
- int(server_properties["view-distance"]) <= 6
prefix: "❌ "
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: {int(server_properties[\"view-distance\"]) - 1}."
- expressions:
- int(spigot["world-settings"]["default"]["mob-spawn-range"]) >= 8
- int(spigot["world-settings"]["default"]["view-distance"]) <= 6
prefix: "❌ "
value: "Decrease this in spigot.yml.\nRecommended: 2."
value: "Decrease this in [spigot.yml](http://bit.ly/spiconf).\nRecommended: {int(spigot[\"world-settings\"][\"default\"][\"view-distance\"]) - 1}."
paper:
max-auto-save-chunks-per-tick:
- expressions:
- int(paper["world-settings"]["default"]["max-auto-save-chunks-per-tick"]) >= 24
prefix: "❌ "
value: "Decrease this in paper.yml.\nRecommended: 6."
value: "Decrease this in [paper.yml](http://bit.ly/paperconf).\nRecommended: 6."
optimize-explosions:
- expressions:
- paper["world-settings"]["default"]["optimize-explosions"] == "false"
prefix: "❌ "
value: "Enable this in paper.yml."
value: "Enable this in [paper.yml](http://bit.ly/paperconf)."
mob-spawner-tick-rate:
- expressions:
- int(paper["world-settings"]["default"]["mob-spawner-tick-rate"]) == 1
prefix: "❌ "
value: "Increase this in paper.yml.\nRecommended: 2."
value: "Increase this in [paper.yml](http://bit.ly/paperconf).\nRecommended: 2."
game-mechanics.disable-chest-cat-detection:
- expressions:
- paper["world-settings"]["default"]["game-mechanics"]["disable-chest-cat-detection"] == "false"
prefix: "❌ "
value: "Enable this in paper.yml"
value: "Enable this in [paper.yml](http://bit.ly/paperconf)"
container-update-tick-rate:
- expressions:
- paper["world-settings"]["default"]["game-mechanics"]["container-update-tick-rate"] == "false"
- int(paper["world-settings"]["default"]["container-update-tick-rate"]) == 1
prefix: "❌ "
value: "Increase this in paper.yml.\nRecommended: 3."
value: "Increase this in [paper.yml](http://bit.ly/paperconf).\nRecommended: 3."
grass-spread-tick-rate:
- expressions:
- int(paper["world-settings"]["default"]["game-mechanics"]["grass-spread-tick-rate"]) == 1
- int(paper["world-settings"]["default"]["grass-spread-tick-rate"]) == 1
prefix: "❌ "
value: "Increase this in paper.yml.\nRecommended: 4."
value: "Increase this in [paper.yml](http://bit.ly/paperconf).\nRecommended: 4."
despawn-ranges.soft:
- expressions:
- int(paper["world-settings"]["default"]["despawn-ranges"]["soft"]) >= 32
prefix: "❌ "
value: "Decrease this in paper.yml.\nRecommended: 28."
value: "Decrease this in [paper.yml](http://bit.ly/paperconf).\nRecommended: 28."
despawn-ranges.hard:
- expressions:
- int(paper["world-settings"]["default"]["despawn-ranges"]["hard"]) >= 32
- int(paper["world-settings"]["default"]["despawn-ranges"]["hard"]) >= 128
prefix: "❌ "
value: "Decrease this in paper.yml.\nRecommended: 48."
value: "Decrease this in [paper.yml](http://bit.ly/paperconf).\nRecommended: 48."
hopper.disable-move-event:
- expressions:
- paper["world-settings"]["default"]["hopper"]["disable-move-event"] == "false"
prefix: "❌ "
value: "Enable this in paper.yml"
value: "Enable this in [paper.yml](http://bit.ly/paperconf)"
non-player-arrow-despawn-rate:
- expressions:
- int(paper["world-settings"]["default"]["non-player-arrow-despawn-rate"]) == -1
prefix: "❌ "
value: "Set a value in paper.yml.\nRecommended: 60"
value: "Set a value in [paper.yml](http://bit.ly/paperconf).\nRecommended: 60"
creative-arrow-despawn-rate:
- expressions:
- int(paper["world-settings"]["default"]["creative-arrow-despawn-rate"]) == -1
prefix: "❌ "
value: "Set a value in paper.yml.\nRecommended: 60"
value: "Set a value in [paper.yml](http://bit.ly/paperconf).\nRecommended: 60"
non-player-arrow-despawn-rate:
- expressions:
- paper["world-settings"]["default"]["prevent-moving-into-unloaded-chunks"] == "false"
prefix: "❌ "
value: "Enable this in paper.yml."
value: "Enable this in [paper.yml](http://bit.ly/paperconf)."
use-faster-eigencraft-redstone:
- expressions:
- paper["world-settings"]["default"]["use-faster-eigencraft-redstone"] == "false"
prefix: "❌ "
value: "Enable this in paper.yml."
value: "Enable this in [paper.yml](http://bit.ly/paperconf)."
fix-climbing-bypassing-cramming-rule:
- expressions:
- paper["world-settings"]["default"]["fix-climbing-bypassing-cramming-rule"] == "false"
prefix: "❌ "
value: "Enable this in paper.yml."
value: "Enable this in [paper.yml](http://bit.ly/paperconf)."
armor-stands-do-collision-entity-lookups:
- expressions:
- paper["world-settings"]["default"]["armor-stands-do-collision-entity-lookups"] == "true"
prefix: "❌ "
value: "Disable this in paper.yml."
value: "Disable this in [paper.yml](http://bit.ly/paperconf)."
armor-stands-tick:
- expressions:
- paper["world-settings"]["default"]["armor-stands-tick"] == "true"
@ -387,65 +427,88 @@ config:
- '"BlockBalls" not in plugins'
- '"ArmorStandTools" not in plugins'
prefix: "❌ "
value: "Disable this in paper.yml."
value: "Disable this in [paper.yml](http://bit.ly/paperconf)."
per-player-mob-spawns:
- expressions:
- paper["world-settings"]["default"]["per-player-mob-spawns"] == "false"
prefix: "❌ "
value: "Enable this in paper.yml."
value: "Enable this in [paper.yml](http://bit.ly/paperconf)."
alt-item-despawn-rate.enabled:
- expressions:
- paper["world-settings"]["default"]["alt-item-despawn-rate"]["enabled"] == "false"
prefix: "❌ "
value: "Enable this in paper.yml."
value: "Enable this in [paper.yml](http://bit.ly/paperconf)."
enable-treasure-maps:
- expressions:
- paper["world-settings"]["default"]["enable-treasure-maps"] == "true"
prefix: "❌ "
value: "Disable this in paper.yml. Why? Generating treasure maps is extremely expensive and can hang a server if the structure it's trying to locate is really far away."
value: "Disable this in [paper.yml](http://bit.ly/paperconf). Why? Generating treasure maps is extremely expensive and can hang a server if the structure it's trying to locate is really far away."
projectile-load-save-per-chunk-limit:
- expressions:
- int(paper["world-settings"]["default"]["projectile-load-save-per-chunk-limit"]) == -1
prefix: "❌ "
value: "Set a value in paper.yml. Recommended: 8."
value: "Set a value in [paper.yml](http://bit.ly/paperconf). Recommended: 8."
no-tick-view-distance:
- expressions:
- int(paper["world-settings"]["default"]["viewdistances"]["no-tick-view-distance"]) == -1
- spigot["world-settings"]["default"]["view-distance"] == "default"
- int(server_properties["view-distance"]) >= 4
prefix: "❌ "
value: Set a value in [paper.yml](http://bit.ly/paperconf).\nRecommended {server_properties["view-distance"]}. Reduce view-distance in server.properties to 3.
- expressions:
- int(paper["world-settings"]["default"]["viewdistances"]["no-tick-view-distance"]) == -1
- int(spigot["world-settings"]["default"]["view-distance"]) >= 4
prefix: "❌ "
value: Set a value in [paper.yml](http://bit.ly/paperconf).\nRecommended {spigot["world-settings"]["default"]["view-distance"]}. Reduce view-distance in server.properties to 3.
purpur:
settings.use-alternate-keepalive:
- expressions:
- purpur["settings"]["use-alternate-keepalive"] == "false"
- '"TCPShield" not in plugins'
prefix: "❌ "
value: "Enable this in [purpur.yml](http://bit.ly/purpurc)."
- expressions:
- purpur["settings"]["use-alternate-keepalive"] == "true"
- '"TCPShield" in plugins'
prefix: "❌ "
value: "Disable this in [purpur.yml](http://bit.ly/purpurc). It can cause issues with TCPShield"
settings.dont-send-useless-entity-packets:
- expressions:
- purpur["settings"]["dont-send-useless-entity-packets"] == "false"
prefix: "❌ "
value: "Enable this in purpur.yml."
value: "Enable this in [purpur.yml](http://bit.ly/purpurc)."
mobs.dolphin.disable-treasure-searching:
- expressions:
- purpur["world-settings"]["default"]["mobs"]["dolphin"]["disable-treasure-searching"] == "false"
prefix: "❌ "
value: "Enable this in purpur.yml."
value: "Enable this in [purpur.yml](http://bit.ly/purpurc)."
mobs.villager.brain-ticks:
- expressions:
- int(purpur["world-settings"]["default"]["mobs"]["villager"]["brain-ticks"]) == 1
prefix: "❌ "
value: "Increase this in purpur.yml.\nRecommended: 4."
value: "Increase this in [purpur.yml](http://bit.ly/purpurc).\nRecommended: 4."
mobs.villager.spawn-iron-golem.radius:
- expressions:
- int(purpur["world-settings"]["default"]["mobs"]["villager"]["spawn-iron-golem"]["radius"]) == 0
prefix: "❌ "
value: "Increase this in purpur.yml.\nRecommended: 5."
value: "Increase this in [purpur.yml](http://bit.ly/purpurc).\nRecommended: 5."
mobs.zombie.aggressive-towards-villager-when-lagging:
- expressions:
- purpur["world-settings"]["default"]["mobs"]["zombie"]["aggressive-towards-villager-when-lagging"] == "true"
prefix: "❌ "
value: "Disable this in purpur.yml."
value: "Disable this in [purpur.yml](http://bit.ly/purpurc)."
gameplay-mechanics.entities-can-use-portals:
- expressions:
- purpur["world-settings"]["default"]["gameplay-mechanics"]["entities-can-use-portals"] == "true"
prefix: "❌ "
value: "Disable this in purpur.yml to prevent players from creating chunk anchors."
value: "Disable this in [purpur.yml](http://bit.ly/purpurc) to prevent players from creating chunk anchors."
mobs.villager.lobotomize.enabled:
- expressions:
- purpur["world-settings"]["default"]["mobs"]["villager"]["lobotomize"]["enabled"] == "false"
prefix: "❌ "
value: "Enable this in purpur.yml."
value: "Enable this in [purpur.yml](http://bit.ly/purpurc)."
gameplay-mechanics.player.teleport-if-outside-border:
- expressions:
- purpur["world-settings"]["default"]["gameplay-mechanics"]["player"]["teleport-if-outside-border"] == "false"
prefix: "❌ "
value: "Enable this in purpur.yml."
value: "Enable this in [purpur.yml](http://bit.ly/purpurc)."
Loading…
Cancel
Save