Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge changes from Poseidon #37

Merged
merged 12 commits into from
Jun 29, 2024
39 changes: 36 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,48 @@
# Project-Poseidon
![](/img/banner.png)
## What's Project Poseidon?
A CraftBukkit CB1060 fork for Beta 1.7.3 fixing bugs and adding basic features.<br>
**A CraftBukkit CB1060 fork for Beta 1.7.3 fixing bugs and adding basic features.<br>**

If your looking for Project Poseidon support on pre-1.7.3 versions, please check out [Project Poseidon Uberbukkit](https://github.com/Moresteck/Project-Poseidon-Uberbukkit) developed by Moresteck which supports earlier versions.<br>

Discord: https://discord.gg/FwKg676

## Features
This is a non-exhaustive list of features that Project Poseidon includes:

- **UUID Support:** Settings to enable UUID-based inventories alongside methods for plugins to transition to UUID-based systems similar to modern Minecraft server implementations.
- **Poseidon Watchdog Implementation:** An automatic utility for detecting server hangs, ending the server process, and providing diagnostics to fix the underlying issues.
- **Packet Events:** Adds packet send and receive events for advanced plugin development without needing Spout or to use Reflections that are incompatible with modern Java versions.
- **Inventory Block Duplication Fixes:** Includes fixes for chest, furnace, inventory block duplication, and Minecart duplication issues.
- **Cross-World Duplication Fix:** Fixes a cross-world duplication glitch.
- **Duplication Glitch Fix:** Fix a bug with the Bukkit chunk cache which allowed users to duplicate and get unobtainable items.
- **Server Crash Fix:** Addresses multiple server crash issues.
- **Connection Pauses:** A powerful feature allowing developers to retrieve information asynchronously before a player connects.
- **Event Handlers:** Modern event handlers backported to facilitating easier coding, plugin backporting, and early release plugin support.
- **Vanish API Backport:** Backports the modern vanish API for easy vanish plugin creation and fixes issues with hacking players seeing vanished players.
- **Logging Enhancements:** Adds an option for daily log file creation and logs player commands to the console, with exceptions for Authme, XAuth, and similar plugins.
- **TPS API and Command:** Adds a TPS command and API for plugins to access historical TPS data.
- **Server Shutdown Improvements:** Enhances server shutdown procedures to ensure world/player data and plugin data are properly saved.
- **Release2Beta Support:** Added support for Release2Beta, including IP Forwarding.
- **Tree Growth Blockage Settings:** Allows server owners to block tree growth from replacing certain blocks to prevent griefing.
- **TCP NoDelay Option:** Improves netcode performance for compatible clients.
- **Ragequit/Ragejoin Fixes:** Prevents ragequit and ragejoin connection/chat spam.
- **Plugin Hiding:** Allows plugins to be hidden from the server list via an attribute in `plugin.yml`.
- **Improve Console Debug:** Make multiple common errors less verbose in the console.
- **Event Handling Improvements:** Ensures primed TNT fires the correct event and backports the explosion event from modern Bukkit.
- **Spawn Location Options:** Provides options to disable spawn location randomization and teleportation to the highest safe block on join.
- **Configurable Mob Spawner Area Limit:** Allows server owners to set a mob-cap for mob spawners to prevent mob farms from causing extreme lag.



## Want to use Project Poseidon on your server?
Please read the following article before changing over to Project Poseidon: https://github.com/RhysB/Project-Poseidon/wiki/Implementing-Project-Poseidon-In-Production

# Download
You can download the latest builds at the [Glass Launcher Jenkins](https://jenkins.glass-launcher.net/job/Project-Poseidon/).

Please note, download the artifact (JAR) without original in the name, eg. `project-poseidon-1.1.8.jar`.

## Licensing
CraftBukkit and Bukkit are licensed under GNU General Public License v3.0<br>
Any future commits to this repository will remain under the same GNU General Public License v3.0<br>
Expand Down Expand Up @@ -48,5 +81,5 @@ We include files from the mc-dev GitHub repository. This code is automatically g

If Mojang Studios or someone on their behalf wants to have this repository removed due to including copyrighted Minecraft sources like bukkit/mc-dev, please contact me or make an issue.

## How to setup ModLoaderMP support (NOT WORKING)
Please read the following: https://github.com/RhysB/Project-Poseidon/wiki/Adding-ModLoaderMP
## How to setup ModLoaderMP support (NOT WORKING)
Please read the following: https://github.com/RhysB/Project-Poseidon/wiki/Adding-ModLoaderMP
39 changes: 34 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,50 @@
<id>bukkit-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots</url>
</repository>
<repository>
<id>chew-jenkins</id>
<url>https://jenkins.chew.pw/plugin/repository/everything</url>
</repository>
<!-- <repository>-->
<!-- <id>chew-jenkins</id>-->
<!-- <url>https://jenkins.chew.pw/plugin/repository/everything</url>-->
<!-- </repository>-->
<repository>
<id>jline</id>
<name>JLine Project Repository</name>
<url>http://jline.sourceforge.net/m2repo</url>
</repository>
<!-- Repository for resolving release dependencies -->
<repository>
<id>johnymuffin-nexus-releases</id>
<url>https://repository.johnymuffin.com/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<!-- Repository for resolving snapshot dependencies -->
<repository>
<id>johnymuffin-nexus-snapshots</id>
<url>https://repository.johnymuffin.com/repository/maven-snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<!-- <dependency>-->
<!-- <groupId>org.bukkit</groupId>-->
<!-- <artifactId>bukkit</artifactId>-->
<!-- <version>0.0.1-SNAPSHOT</version>-->
<!-- <type>jar</type>-->
<!-- <scope>compile</scope>-->
<!-- </dependency>-->
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>0.0.1-POSEIDON</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Expand Down
21 changes: 21 additions & 0 deletions src/main/java/com/legacyminecraft/poseidon/Poseidon.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.legacyminecraft.poseidon;

import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.CraftServer;

import java.util.LinkedList;

public class Poseidon {

/**
* Returns a list of the server's TPS (Ticks Per Second) records for performance monitoring.
* The list contains Double values indicating the TPS at each second, ordered from most recent to oldest.
*
* @return LinkedList<Double> of TPS records.
*/
public static LinkedList<Double> getTpsRecords() {
return ((CraftServer) Bukkit.getServer()).getServer().getTpsRecords();
}


}
Loading