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

Custom PaperSpigot Fork For Even Higher Performance

  1. LegitSpigot
    Trulli - 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

    [​IMG]

    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
    AYisGOD and M4lado like this.

Recent Reviews

  1. Tptuaasn
    Tptuaasn
    5/5,
    Version: 1.16.3-20201023-a8bfc77
    10/10
  2. picopnsen
    picopnsen
    5/5,
    Version: 1.16.3-20201023-a8bfc77
    Works Perfekt!
    Could we get an update? (1.16.4)
  3. DeBeBe
    DeBeBe
    5/5,
    Version: 1.16.3-20201023-a8bfc77
    good resource :)