Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
c9c5ac7
Conditionally add TPS fields based on values
renvins Jul 18, 2025
03d6f47
Add GeneralConfiguration class for YAML file handling
renvins Jul 18, 2025
a527727
Refactor DatabaseConfiguration and MetricsConfiguration
renvins Jul 19, 2025
cff0e62
Refactor DatabaseService to use GeneralConfiguration
renvins Jul 19, 2025
00e3290
Update on database and metrics configuration
renvins Jul 19, 2025
0a50c5c
Update also on the line protocol formatter
renvins Jul 19, 2025
f79125f
Refactor ServerPulseCommand and ServerPulseVelocity to use GeneralCon…
renvins Jul 19, 2025
b575f20
Refactor ServerPulseCommand and ServerPulseFabric to use GeneralConfi…
renvins Jul 19, 2025
22c8be4
Add JitPack repository and update Simple-YAML dependency scope
renvins Jul 19, 2025
9a6e4c4
Refactor commands to use GeneralConfiguration instead of BungeeCordCo…
renvins Jul 19, 2025
1e8db19
Refactor commands and configuration to use GeneralConfiguration
renvins Jul 19, 2025
887725a
Merge remote-tracking branch 'origin/master' into refactoring
renvins Jul 19, 2025
a1ced88
Add build configuration and initial test setup
renvins Jul 20, 2025
2005273
Add docker compose for testing
renvins Jul 21, 2025
712b4c6
Fix reload command
renvins Jul 21, 2025
ff4a13b
Removed all tests, starting with new approach
renvins Jul 21, 2025
ea74fac
Add end-to-end testing setup with Docker Compose and Minecraft bot
renvins Jul 22, 2025
3a99c5e
Refactor build configuration, and improve error logging, add tests
renvins Jul 23, 2025
dcc99be
Fix on test config.yml
renvins Jul 23, 2025
b844912
Refactor Docker Compose files for Minecraft servers and update paths
renvins Jul 24, 2025
39bb6ce
Refactor build configuration and enhance tests
renvins Jul 24, 2025
355ab9c
Refactor Docker configurations for BungeeCord and Velocity servers
renvins Jul 24, 2025
7cbfdba
Refactor configuration classes and improve documentation
renvins Jul 24, 2025
96706a1
Fix on CI
renvins Jul 24, 2025
d47ea97
Update to 0.4.5-SNAPSHOT
renvins Jul 24, 2025
dde6ffa
Fix on velocity version
renvins Jul 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,15 @@ jobs:
retention-days: 14 # Keep artifacts for 14 days
if-no-files-found: error # Fail the workflow if no JARs are found

# Upload BungeeCord JAR as an artifact
- name: Upload BungeeCord JAR Artifact
uses: actions/upload-artifact@v4
with:
name: serverpulse-bungeecord-jar
path: bungeecord/build/libs/serverpulse-*.jar
retention-days: 14
if-no-files-found: error # Fail the workflow if no JARs are found

# --- Infrastructure Testing ---

# 4. Install jq (needed for parsing InfluxDB health check JSON)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package it.renvins.serverpulse.api.data;


public class AsyncMetricsSnapshot {

private final long usedHeap;
Expand All @@ -25,30 +26,65 @@ public AsyncMetricsSnapshot(long usedHeap, long commitedHeap, long totalDisk, lo
this.avgPing = avgPing;
}

/**
* Gets the amount of used heap memory in bytes.
*
* @return the used heap memory
*/
public long getUsedHeap() {
return usedHeap;
}

/**
* Gets the amount of committed heap memory in bytes.
*
* @return the committed heap memory
*/
public long getCommitedHeap() {
return commitedHeap;
}

/**
* Gets the total disk space available in bytes.
*
* @return the total disk space
*/
public long getTotalDisk() {
return totalDisk;
}

/**
* Gets the usable disk space available in bytes.
*
* @return the usable disk space
*/
public long getUsableDisk() {
return usableDisk;
}

/**
* Gets the minimum ping recorded in milliseconds.
*
* @return the minimum ping
*/
public long getMinPing() {
return minPing;
}

/**
* Gets the maximum ping recorded in milliseconds.
*
* @return the maximum ping
*/
public long getMaxPing() {
return maxPing;
}

/**
* Gets the average ping recorded in milliseconds.
*
* @return the average ping
*/
public long getAvgPing() {
return avgPing;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.util.Map;


public class SyncMetricsSnapshot {

private final double[] tps;
Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
group = "it.renvins"
version = "0.4.2-SNAPSHOT"
version = "0.4.5-SNAPSHOT"

repositories {
mavenCentral()
Expand Down
5 changes: 5 additions & 0 deletions bukkit/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,15 @@ repositories {
name = "papermc"
url = uri("https://repo.papermc.io/repository/maven-public/")
}
maven { url = uri("https://jitpack.io") }
}

dependencies {
implementation(project(":api"))
implementation(project(":common"))

compileOnly("io.papermc.paper:paper-api:1.21.7-R0.1-SNAPSHOT")
compileOnly("com.github.Carleslc.Simple-YAML:Simple-Yaml:1.8.4")
}

java {
Expand All @@ -31,6 +33,9 @@ tasks.withType<ShadowJar> {
archiveBaseName = "serverpulse"
archiveClassifier = "bukkit"
archiveVersion = "${rootProject.version}"
duplicatesStrategy = DuplicatesStrategy.EXCLUDE

minimize()
}

tasks.withType<ProcessResources> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,10 @@
import it.renvins.serverpulse.bukkit.logger.BukkitLogger;
import it.renvins.serverpulse.bukkit.metrics.BukkitTPSRetriever;
import it.renvins.serverpulse.common.DatabaseService;
import it.renvins.serverpulse.common.config.DatabaseConfiguration;
import it.renvins.serverpulse.common.config.MetricsConfiguration;
import it.renvins.serverpulse.common.config.GeneralConfiguration;
import it.renvins.serverpulse.bukkit.commands.ServerPulseCommand;
import it.renvins.serverpulse.bukkit.config.BukkitConfiguration;
import it.renvins.serverpulse.common.logger.PulseLogger;
import it.renvins.serverpulse.common.disk.DiskRetriever;
import it.renvins.serverpulse.bukkit.config.BukkitDatabaseConfiguration;
import it.renvins.serverpulse.bukkit.config.BukkitMetricsConfiguration;
import it.renvins.serverpulse.bukkit.metrics.BukkitPingRetriever;
import it.renvins.serverpulse.bukkit.metrics.PaperTPSRetriever;
import it.renvins.serverpulse.bukkit.platform.BukkitPlatform;
Expand All @@ -35,7 +31,7 @@ public class ServerPulseBukkitLoader implements Service {
private final ServerPulseBukkit plugin;
public static Logger LOGGER;

private final BukkitConfiguration config;
private final GeneralConfiguration config;

private final Platform platform;

Expand All @@ -51,17 +47,14 @@ public ServerPulseBukkitLoader(ServerPulseBukkit plugin) {
this.plugin = plugin;
LOGGER = plugin.getLogger();

this.config = new BukkitConfiguration(plugin, "config.yml");

PulseLogger logger = new BukkitLogger(LOGGER);

this.config = new GeneralConfiguration(logger, plugin.getDataFolder(), "config.yml");

this.platform = new BukkitPlatform(plugin);
TaskScheduler taskScheduler = new BukkitTaskScheduler(plugin);

DatabaseConfiguration databaseConfiguration = new BukkitDatabaseConfiguration(config);
MetricsConfiguration metricsConfiguration = new BukkitMetricsConfiguration(config);

this.databaseService = new DatabaseService(logger, platform, databaseConfiguration, taskScheduler);
this.databaseService = new DatabaseService(logger, platform, config, taskScheduler);

if (isPaper()) {
this.tpsRetriever = new PaperTPSRetriever();
Expand All @@ -72,7 +65,7 @@ public ServerPulseBukkitLoader(ServerPulseBukkit plugin) {
this.pingRetriever = new BukkitPingRetriever();

MetricsCollector collector = new MetricsCollector(logger, platform, tpsRetriever, diskRetriever, pingRetriever);
LineProtocolFormatter formatter = new LineProtocolFormatter(metricsConfiguration);
LineProtocolFormatter formatter = new LineProtocolFormatter(config);

this.metricsService = new MetricsService(logger, collector, formatter, taskScheduler, databaseService);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package it.renvins.serverpulse.bukkit.commands;

import it.renvins.serverpulse.common.config.GeneralConfiguration;
import it.renvins.serverpulse.common.utils.ChatUtils;
import it.renvins.serverpulse.bukkit.config.BukkitConfiguration;
import org.bukkit.command.CommandSender;

public class ReloadCommand extends GeneralCommand {

private final BukkitConfiguration config;
private final GeneralConfiguration config;

public ReloadCommand(String permission, boolean isPlayerOnly, BukkitConfiguration config) {
public ReloadCommand(String permission, boolean isPlayerOnly, GeneralConfiguration config) {
super(permission, isPlayerOnly);
this.config = config;
}
Expand All @@ -19,7 +19,7 @@ public void run(CommandSender sender, String[] args) {
sender.sendMessage(ChatUtils.format(config.getConfig().getString("messages.reloadConfigUsage")));
return;
}
if (!config.reload()) {
if (!config.load()) {
sender.sendMessage(ChatUtils.format(config.getConfig().getString("messages.reloadConfigError")));
} else {
sender.sendMessage(ChatUtils.format(config.getConfig().getString("messages.reloadConfig")));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@
import java.util.HashMap;
import java.util.Map;

import it.renvins.serverpulse.common.config.GeneralConfiguration;
import it.renvins.serverpulse.common.utils.ChatUtils;
import it.renvins.serverpulse.bukkit.config.BukkitConfiguration;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;

public class ServerPulseCommand implements CommandExecutor {

private final BukkitConfiguration config;
private final GeneralConfiguration config;
private final Map<String, GeneralCommand> commands = new HashMap<>();

public ServerPulseCommand(BukkitConfiguration config) {
public ServerPulseCommand(GeneralConfiguration config) {
this.config = config;
registerCommands();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package it.renvins.serverpulse.bukkit.commands;

import it.renvins.serverpulse.api.ServerPulseProvider;
import it.renvins.serverpulse.common.config.GeneralConfiguration;
import it.renvins.serverpulse.common.utils.ChatUtils;
import it.renvins.serverpulse.bukkit.config.BukkitConfiguration;
import org.bukkit.command.CommandSender;

public class StatusCommand extends GeneralCommand {

private final BukkitConfiguration config;
private final GeneralConfiguration config;

public StatusCommand(String permission, boolean isPlayerOnly, BukkitConfiguration config) {
public StatusCommand(String permission, boolean isPlayerOnly, GeneralConfiguration config) {
super(permission, isPlayerOnly);

this.config = config;
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Loading