GitXplorerGitXplorer
C

TitaniumMC

public
4 stars
2 forks
0 issues

Commits

List of commits on branch main.
Verified
6d124af19debe401b4c9d34579b6daaa6f77ea19

Add JavaDocs

PP3ridot committed 2 years ago
Verified
056e7c3ab59ef835b7a2815fba2474ae602432ec

Revert "[WindSpigot-????] Concurrent map for tracked players" patch

PP3ridot committed 2 years ago
Verified
0a2b045d670601cda11bbe02e9793a4a9098dfd9

Remove debug log

PP3ridot committed 2 years ago
Verified
133ba4a8b448dd0a3381901b838f7b77c7e40e57

Fix loading worlds generators

PP3ridot committed 2 years ago
Verified
3a491d42c13a54080c43bcc5614c1ff11188e947

GH-69 Remove timings (Resolves #69)

PP3ridot committed 2 years ago
Verified
463bb200aca3bb21b27e2dd26ac649694089f1b7

Add author to patches

PP3ridot committed 2 years ago

README

The README file for this repository.

Titanium Titanium CI Discord Shield

Titanium is 1.8.8 Paper fork which aims to improve performance, fix exploits and bugs, improve API, and provide better configuration for server administrators.

Titanium officially supports JDK 8, 11 & 17 - but we recommend to use Java 17.

Getting Titanium

You can download the latest version of Titanium from Releases.

But also you can build it yourself. See How To Build.

Requirements

If you want to build Titanium you will need these things to be installed and available from your shell:

How to build

To patching, compiling and building Titanium you will use titanium script.

To just build Titanium clone this repository and run ./titanium build paperclip in the root directory. Then you will find your server jar in Titanium-Server/build/libs, it should be named titanium.jar.

API

JavaDocs

API - Link
Server - Link

Maven

Repository:

<repository>
  <id>titanvale-snapshots</id>
  <url>https://repo.titanvale.net/snapshots/</url>
</repository>

API:

<dependency>
  <groupId>net.titanvale</groupId>
  <artifactId>titanium-api</artifactId>
  <version>1.8.8-R0.1-SNAPSHOT</version>
  <scope>provided</scope>
</dependency>

Server:

<dependency>
  <groupId>net.titanvale</groupId>
  <artifactId>titanium</artifactId>
  <version>1.8.8-R0.1-SNAPSHOT</version>
  <scope>provided</scope>
</dependency>

Patches

Titanium implements patches from other engines as well. All credits go to the people who created them.

[Spigot-0138] Branchless NibbleArray by md5
[Spigot-2380] Hitting in the air will always load the chunk at 0,0 by md_5
[Spigot-5428] Better handling of some ItemMeta by Mathias

[Paper-0008/0013] Add command line option to load extra plugin jars not in the plugins folder by Jason Penilla
[Paper-0022] Further improve server tick loop by Aikar
[Paper-0044] Use UserCache for player heads
[Paper-0072] Fix Furnace cook time bug when lagging by Aikar
[Paper-0076] Optimized light level comaprsions by Aikar
[Paper-0085] Use a Shared Random for Entities
[Paper-0121] Reduce IO ops opening a new region
[Paper-0144] Improve Minecraft Hopper Performance
[Paper-0168] Disable ticking of snow blocks
[Paper-0173] Optimize World.isLoaded(BlockPosition)
[Paper-0180] Server Tick Events
[Paper-0196] Fix block break desync by Michael Himing
[Paper-0202] Shame on you Mojang moves chunk loading off https thread
[Paper-0302] Don't load chunks for villager door check by Aikar
[Paper-0313] Optimized world time updates by Aikar
[Paper-0321] Cleanup allocated favicon ByteBuf
[Paper-0342] Always process chunk removal in removeEntity by Aikar 2018
[Paper-0344] [MC-111480] Start Entity ID's at 1
[Paper-0346] [MC-135506] Experience should save as Integers
[Paper-0347] Don't go below 0 for pickupDelay, breaks picking up items by Aikar
[Paper-0350] Use a Queue for Queueing Commands
[Paper-0352] Optimize BlockPosition helper methods by Spottedleaf
[Paper-0353] Send nearby packets from world player list not server by Mystiflow
[Paper-0797] Use Velocity compression and cipher natives by Elier

[Taco-0006] Fix hopper lag by making entities look for hoppers by Techcable
[Taco-0010] Optimize armor stands by Techcable
[Taco-0011] Add a flag to disable InventoryMoveItemEvent by Techcable
[Taco-0013] Option to disable Scoreboard for non players by Aikar
[Taco-0014] Add an option for grass to ignore light by Techcable
[Taco-0017] Add option to stop redstone firing BlockPhysicsEvent by frash23
[Taco-0024] Optimize tnt entity and falling block movement
[Taco-0025] Fix east west cannoning

[SportPaper-0027] Fix head rotation packet spam
[SportPaper-0134] Improved Async Task Scheduler by cswhite2000
[SportPaper-0162] Fix PlayerInteractEvent not cancelling properly by cswhite2000
[SportPaper-0176] Use fast util collections
[SportPaper-0185] Speed up chunk unloading
[SportPaper-0198] Optimize head rotation patch
[SportPaper-0204] Fix Teleport Invisibility

[FlamePaper-0003] Fix chunk memory leak
[FlamePaper-0005] Fix multiple memory leaks
[FlamePaper-0008] Do not load chunks for light check by Aikar
[FlamePaper-0010] Fix NullPointerException exploits for invalid logins
[FlamePaper-0013] Check channel before reading
[FlamePaper-0015] Fix Book Exploits
[FlamePaper-0017] Pearl through blocks
[FlamePaper-0024] Disable Unloaded Chunk Movement
[FlamePaper-0030] Adaptive chunk GC
[FlamePaper-0033] Dont check occluding hoppers by LinsaFTW
[FlamePaper-0034] Hopper item lookup optimization by LinsaFTW

[Nacho-0009] Remove an extra file io call within world credit bob7l
[Nacho-0010] Use jchambers' FAST UUID methods
[Nacho-0012] Don't load chunks for physics
[Nacho-0019] Avoid lock every packet send
[Nacho-0023] Optimize EntityTracker for the chunk updater
[Nacho-0024] Do not create new BlockPosition when loading chunk
[Nacho-0025] Disable random tickSpeed being modified
[Nacho-0050] Custom knockback
[Nacho-????] Prevent most NBT related overflow exploits
[Nacho-????] Async TNT by Sculas
[Nacho-????] Async Entity Tracker by Rastrian
[Nacho-????] Async knockback and hit detection packets by Rastrian

[WindSpigot-0001] Thread affinity by windcolor-dev
[WindSpigot-0017] Async entity tracking by windcolor-dev
[WindSpigot-0054] Modern tick loop by windcolor-dev
[WindSpigot-????] Use concurrent entity tracking collections by windcolor-dev

[PandaSpigot-0003/0004] Setup Gradle project by hpfxd
[PandaSpigot-0005] Add internal setMaxStackSize method for materials by hpfxd
[PandaSpigot-0004/0005] Backport PlayerHandshakeEvent from Paper by hpfxd
[PandaSpigot-0006] Update to Netty 4.1.x by hpfxd 
[PandaSpigot-0007] Add Unix domain socket support by hpfxd
[PandaSpigot-0008] Remove hacky stackable buckets code by hpfxd
[PandaSpigot-0009] Improved plugins command by hpfxd
[PandaSpigot-0010] Optimize Network Manager and add advanced packet support by hpfxd
[PandaSpigot-0011] Allow controlled flushing for network manager by hpfxd
[PandaSpigot-0012] Consolidate flush calls for entity tracker packets by hpfxd
[PandaSpigot-0013] Optimise non-flush packet sending by hpfxd
[PandaSpigot-0008/0024] Player Chunk Load/Unload Events by ysl3000
[PandaSpigot-0028] Avoid blocking on Network Manager creation by hpfxd
[PandaSpigot-0033] Configurable arrow trajectory by hpfxd
[PandaSpigot-0034] Prevent fishing hooks from using portals by hpfxd
[PandaSpigot-0035] Cache user authenticator threads by hpfxd
[PandaSpigot-0010/0037] Backport PlayerProfile API by hpfxd
[PandaSpigot-0039] Optimize VarInt reading and writing by hpfxd
[PandaSpigot-0040] Various micro-optimizations for PacketDataSerializer by hpfxd
[PandaSpigot-0041] Use TerminalConsoleAppender for console improvements by hpfxd
[PandaSpigot-0012/0045] Ability to change PlayerProfile in AsyncPreLoginEvent by Aikar
[PandaSpigot-0046] Performance improvement for Chunk.getEntities by hpfxd
[PandaSpigot-0013/0047] Add Raw Byte ItemStack Serialization
[PandaSpigot-0048] Only process BlockPhysicsEvent if a plugin has a listener by Aikar
[PandaSpigpt-0049] Add setting for proxy online mode status by hpfxd
[PandaSpigot-0050] Metrics by hpfxd
[PandaSpigot-0054] Disconnect for payload errors by uRyanxD
[PandaSpigot-0056] Faster redstone torch rapid clock removal by uRyanxD
[PandaSpigot-0060] Optimise removeQueue by hpfxd

[IonSpigot-0006] Fix Chunk Loading by SuicidalKids
[IonSpigot-0008] Reduce Chunk Hashing by SuicidalKids 
[IonSpigot-0009] Reduce Unload Queue Complexity by SuicidalKids
[IonSpigot-0011] Async Spawn Chunks by SuicidalKids
[IonSpigot-0012] Movement Cache by SuicidalKids
[IonSpigot-0014] Faster Chunk Entity List by SuicidalKids
[IonSpigot-0020] Faster EntityTracker Collections by SuicidalKids
[IonSpigot-0023] Implement PandaWire by SuicidalKids
[IonSpigot-0037] Fast Cannon Entity Tracker by SuicidalKids

[Migot-0004] Non Blocking Auto Save by Poweruser
[Migot-0005] Fix Occasional Client Side Unloading of Chunk 0 0
[Migot-0009] Prevent creature spawning in unloaded chunks
[Migot-0027] Enable Concurrent Chunk Decoration
[Migot-0032] Thread Local IntCache
[Migot-0036] Check for lava only once per tick

[MineTick-0011] Optimize Idle Furnaces
[MineTick-0017] Fix insane nether portal lag
[MineTick-0023] Fix chunk coordinates miscalculations

[KigPaper-0070/0233] Prevent billion laughs attacks

[Tuinity-????] Skip updating entity tracker without players

[Akarin-0007] Avoid double I/O operation on load player file
[Akarin-0010] Save Json list asynchronously

[Purpur-0150] Tick fluids config
[Purpur-0046/0280] Spark Profiler by BillyGalbreath
[Purpur-0049/0290] Remove Timings by BillyGalbreath
[Purpur-0291] Remove Mojang Profiler by BillyGalbreath

[Yatopia-0030] Don't save Fireworks and Arrows by tr7zw
[Yatopia-0047] Smarter statistics ticking

[InsanePaper-269] Cache Chunk Coordinations

Contributing

  • To start contributing to Titanium, make sure you meet the Requirements. Then you can run ./titanium build to prepare upstream and apply patches.
  • To add patches to Titanium simply make your changes in Titanium-API and Titanium-Server, then just commit them. Then run ./titanium rebuild.
  • After modifying code to for eg. test it, run ./titanium jar.