SSSpigot | Custom PaperSpigot Fork For Even Higher Performance | Partially Parallel Ticking

SSSpigot | Custom PaperSpigot Fork For Even Higher Performance | Partially Parallel Ticking 1.16.3-20201023-a8bfc77

No permission to download
- If you found any bugs please don't report it in reviews or "Discussion"! We can help with it in the support discord!
- Please always backup your data no matter what server software you are using.

Discord: https://discord.gg/AmawRdf

The impact of spark/timings on performance
Spark/Timings can greatly affect the performance of SSSpigot.
It has been reported that tps can drop from 20 to 15 because of spark and go back to 20 after the CPU profiler operation.

Features

Original or Partially Original
- Unlike some other custom spigot forks, SSSpigot will be updated to new Minecraft versions. This is why the license duration is not unlimited. (You have the right to use the downloaded version. The non-unlimited thing is future updates.)
- Based on the very latest version of Paper and Tuinity.
- Fix some possible bugs and vulnerabilities introduced by Paper due to outdated libraries
- We respect your privacy. We won't monitor you and removed metrics from Mojang, Spigot and PaperMC. So we cannot tell you how many people are using this server.
- Simple and Stupid. Features that plugins have implemented is up to plugins.
- The default configuration files are kinda optimized
- Optimized Villager
- Merged all thread pools
- Reduce chunks loading
- Toggleable MobAI
- Partially Parallel Entity Ticking and Partially Parallel Pathfinding (fully parallel ticking would break plugins)
- Informative and fast "/tps" command (much faster than Essentials' "/gc" command)
- Configurable Custom ServerModName
- A lot of useless code and bytecodes removed. (On May 1, 2020, the size of PaperSpigot cache/patched_1.15.2.jar is about 8MB larger than the size of SSSpigot)
- Tile Entities Tick Limiters
- Optional automatic update
- The launcher is lightweight, and it should be able to run on any platform that can run Paperclip.
- Remove unnecessary object creation and Remove Streams and Thousands lines of other micro optimizations
- Some other optimizations not listed here

From other forks
- Reduce I/O operation on load player file
- Optimized hopper
- Async player data saving
- Async user cache saving
- Remove Mojang's profiler
- Optimized chunks generating
- Reduce packets
- Ability to disable asynccatcher

Partially Parallel Ticking

How does it work?
Simply move the thread-safe parts off the main thread.

Supported entities (Some Partially)

- Entities outside entity-activation-range
- Bee
- Chicken
- Cow
- Creeper
- Drowned
- Enderman
- Panda
- Zombie
- Zombified Piglin
- Silverfish
- Slime
- Vex
- Villager
- VillagerTrader
- Wither
- ZombieHusk
- ZombieVillager

Configuration

ssspigot.yml

custom-server-mod-name
Type: Global
Default: SSSpigot
Description: The Server Mod Name sent to clients.
dont-save-fireworks
Type: Global
Default: true
Description: If enabled, fireworks won't be saved. Fireworks can bug out and not detonate, and an automated launcher can very easily fill a chunk.
custom-yggdrasil-url
Type: Global
Default: https://api.mojang.com/profiles/
unsupported-settings.disable-async-catcher
Type: Global
Default: false
dont-tick-empty-hoppers
Type: Global or Per World
Default: true
Description: Optimize hoppers that are only used to transport items.
full-hopper-cooldown
Type: Global or Per World
Default: 128
Description: the time of full hopper cooldown
mob-ai
Type: Global or Per World
Default: true
partially-parallel-entity-ticking
Type: Global
Default: true
Description: Note that partially-parallel-entity-ticking will make timings reports inaccurate
fix-item-position-desync
Type: Global
Default: false
Description: https://bugs.mojang.com/browse/MC-4
turtle-eggs-break-from.*
Type: Global
Default: true
Description: https://bugs.mojang.com/browse/MC-168772
tps-catchup
Type: Global
Default: true
lagging-threshold
Type: Global
Default: 19.0
mobs.villager.brain-ticks
Type: Global or Per World
Default: 2
Description: How often (in ticks) should villager's tick their brain logic.
mobs.villager.use-brain-ticks-only-when-lagging
Type: Global or Per World
Default: true
mobs.villager.simpler-behavior
Type: Global
Default: false
mobs.villager.hide-at-night
Type: Global
Default: false
mobs.squid.immune-to-EAR
Type: Global or Per World
Default: false
realtime
Type: Global
Default: true
Description: A limited set of entities, tile entities, and world time will use real time instead of ticks to update.
Already implemented:
- world time
- death time
- entity's age
- riding cooldown
delay-chunkunloads-by
Type: Global
Default: 1
Description: chunkunloads delay in seconds
lag-compensate-block-breaking
Type: Global
Default: true

spawn-limits.monsters
Type: Global or Per World
Default: -1 (disabled)
Description: per world spawn limits https://github.com/PaperMC/Paper/pull/2982
spawn-limits.animals
Type: Global or Per World
Default: -1 (disabled)
spawn-limits.ambient
Type: Global or Per World
Default: -1 (disabled)
spawn-limits.water-animals
Type: Global or Per World
Default: -1 (disabled)

Commands

tps
Alias: gc
Description: A faster alternative to the "/gc" command of Essentials.

setslots
Description: Set max players
Example: /setslots 20
Permission: bukkit.command.setslots

The Structure of Configuration (ssspigot.yml)

Code:
custom-server-mod-name: SSSpigot # Global
dont-tick-empty-hoppers: true # Global, Default Value
worlds:
world: # World Name
dont-tick-empty-hoppers: true # Per World

Permissions

ssspigot.debug.f3n
Description: F3+N debug

Merged PaperMC PRs

- https://github.com/PaperMC/Paper/pull/2982

Fixed Mojang bugs

- https://bugs.mojang.com/browse/MC-4
- https://bugs.mojang.com/browse/MC-168772

Incompatible plugins

- EntityTrackerFixer - https://github.com/PaperMC/Paper/pull/3430

Todo List

- More optimizing

What does the name "SS" mean?

Simple and Stupid
https://wiki.archlinux.org/index.php/Arch_terminology#KISS

Setup

1. Purchase the product
2. Come to our discord and open a ticket and provide a screenshot to prove that you brought this product to get your license key. The license key will be given in 24 hours.
3. Start the launcher
4. Fill in generated ssspigot-launcher.conf with the exactly same license key. Example:
Code:
license=MCM|XXXXX|xxxx
enable-auto-update=true
enable-backup=true

5. Re-start the launcher

Update SSSpigot
Method1: enable "enable-auto-update"
Method2:
Code:
java -Dssspigot.updateonly=true -jar SSSpigotClip.jar

Screenshot



GPL

SSSpigot doesn't violate GPL because SSSpigot use a binary patch distribution system.
The launcher will download vanilla jar, paperclip and SSSpigot's patch and then generate the final jar at runtime.

Source code size comparison (Patches only)
SSSpigot-1.16.1-20200708-745e530:
CraftBukkit 2f18108123a33312a073906cd2a5fe2da18dc049: 428 files, 28873 lines
Spigot c3a49df215f30328bf56f08227072c79944760ed: 116 files, 15083 lines
Paper 29453f1dbeb10812aad3280d0c2b7883084426a0: 758 files, 90605 lines
Tuinity 10d9b1ff70e2bc2c2418817b2ef154fcd681dd37: 45 files, 8021 lines
SSSpigot: 108 files, 28054 lines

Last Words

Leave a positive review to help improving the development of the resource, thanks!

About the developers

I am the only developer on this project, because I can't find a partner with similar experience.

minimum requirements:

- Able to implement an interpreter of a dependently typed language and have experience in creating different programming languages
https://en.wikipedia.org/wiki/Dependent_type
- Have experience in writing and understanding codes
- Have experience using Arch or BSD or other similar operating systems

license notices
Author
LegitSpigot
Downloads
146
Views
442
First release
Last update
Rating
5.00 star(s) 6 ratings

More resources from LegitSpigot

Latest reviews

Update to 1.16.5 please!
update to 1.16.4.. thanks
Nice, please update :)
10/10
Works Perfekt!
Could we get an update? (1.16.4)
good resource :)