Skip to content

Commit

Permalink
Folia (#433)
Browse files Browse the repository at this point in the history
* start integer primitive type

* add basic int map implementation

* replace our primitive implementations with fastutil

* add configuration using fastutil

* convert all weaponmechanics stuff to the new fast config

* spotlessApply

* remove double map test

* let weapon mechanics be run on folia

* use FoliaLib to schedule tasks in MechanicsCore

* use FoliaLib in Database methods

* deprecate TaskChain

* use FoliaLib in FireworkMechanic

* switch firework mechanic to location-based scheduling

* use FoliaLib in Debugger

* add FoliaLib to WeaponMechanics, and convert commands

* convert message mechanics to folia

* convert the weapon info display to be folia compatible

* convert legacy commands

* convert explosion stuff to folia

* remove assertion

* remove TaskChain usages

* fix /wm reload not using CompleteableFuture methods

* add folia support to the MoveTask

* use new projectile spawner

* build with new projectile system

* let full auto work on folia

* convert to com.cjcrafter.scheduler

* fix trying to use tick delay of 0

* start reload folia support

* add foliascheduler 0.3.0 support to MechanicsCore

* add foliascheduler 0.3.0 support to WeaponMechanics

* add folia support to reloading and firearm actions

* primitive folia support for mechanics

* remove legacy task handlers

* remove bukkitrunnable in favor of folia tasks

* working build of folia

* stop trying to cancel tasks onDisable

* relocate to foliascheduler

* fix javadoc error for duplicate key errors

* fix old maven artifacts causing gradle build issues

* fix projectiles not ticking on Spigot servers

* cancel tasks on reload

* fix resource pack downloading happening too early

* teleport async

* fix javadoc error for publishing
  • Loading branch information
CJCrafter authored Oct 11, 2024
1 parent 2450267 commit 0cd878d
Show file tree
Hide file tree
Showing 90 changed files with 1,421 additions and 2,205 deletions.
5 changes: 5 additions & 0 deletions BuildMechanicsCore/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ bukkit {
name = "MechanicsCore" // Since we don't want to use "BuildMechanicsCore"
version = mechanicsCoreVersion
apiVersion = "1.13"
foliaSupported = true

load = net.minecrell.pluginyml.bukkit.BukkitPluginDescription.PluginLoadOrder.STARTUP
authors = listOf("DeeCaaD", "CJCrafter")
Expand Down Expand Up @@ -102,5 +103,9 @@ tasks.shadowJar {
relocate("com.cryptomorin.xseries", "me.deecaad.core.lib.xseries") {
include(dependency("com.github.cryptomorin:XSeries:"))
}

relocate("com.cjcrafter.foliascheduler", "me.deecaad.core.lib.scheduler") {
include(dependency("com.cjcrafter:foliascheduler:"))
}
}
}
4 changes: 3 additions & 1 deletion BuildWeaponMechanics/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ plugins {
id("me.deecaad.mechanics-project")
//id("com.github.johnrengelman.shadow") version "8.1.1"
id("io.github.goooler.shadow") version "8.1.7"
id("net.minecrell.plugin-yml.bukkit") version "0.5.1"
id("net.minecrell.plugin-yml.bukkit") version "0.6.0"
}

dependencies {
Expand Down Expand Up @@ -39,6 +39,7 @@ bukkit {
name = "WeaponMechanics" // Since we don't want to use "BuildWeaponMechanics"
version = weaponMechanicsVersion
apiVersion = "1.13"
foliaSupported = true

authors = listOf("DeeCaaD", "CJCrafter")
depend = listOf("ProtocolLib")
Expand Down Expand Up @@ -93,4 +94,5 @@ tasks.shadowJar {
// to the mechanics core lib.
relocate("net.kyori", "me.deecaad.core.lib")
relocate("kotlin.", "me.deecaad.weaponmechanics.lib.kotlin.")
relocate("com.cjcrafter.foliascheduler", "me.deecaad.core.lib.scheduler")
}
4 changes: 3 additions & 1 deletion MechanicsCore/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ plugins {

repositories {
mavenCentral()
maven(url = "https://mvn.lumine.io/repository/maven-public/")
maven(url = "https://mvn.lumine.io/repository/maven-public/") // Mythic
}

dependencies {
Expand All @@ -31,8 +31,10 @@ dependencies {
implementation("org.slf4j:slf4j-nop:1.7.30")
implementation(Dependencies.MYTHIC_MOBS)
implementation(Dependencies.X_SERIES)
implementation(Dependencies.FOLIA_SCHEDULER)
implementation("xyz.jpenilla:reflection-remapper:0.1.1")
implementation("net.fabricmc:mapping-io:0.5.0")
implementation(Dependencies.FAST_UTIL)

testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")
testImplementation(Dependencies.LATEST_SPIGOT_API)
Expand Down
10 changes: 9 additions & 1 deletion MechanicsCore/src/main/java/me/deecaad/core/MechanicsCore.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package me.deecaad.core;

import com.cjcrafter.foliascheduler.FoliaCompatibility;
import com.cjcrafter.foliascheduler.ServerImplementation;
import me.deecaad.core.events.QueueSerializerEvent;
import me.deecaad.core.events.triggers.EquipListener;
import me.deecaad.core.file.JarSearcher;
Expand Down Expand Up @@ -30,6 +32,7 @@
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;

import java.io.File;
import java.io.IOException;
Expand All @@ -43,10 +46,12 @@ public class MechanicsCore extends JavaPlugin {

public BukkitAudiences adventure;
public MiniMessage message;
public ServerImplementation foliaScheduler;
private boolean registeredMechanics;

public void onLoad() {
instance = this;
foliaScheduler = new FoliaCompatibility(this).getServerImplementation();

int level = getConfig().getInt("Debug_Level");
boolean printTraces = getConfig().getBoolean("Print_Traces");
Expand Down Expand Up @@ -138,12 +143,15 @@ public void onQueue(QueueSerializerEvent event) throws IOException {

public void onDisable() {
HandlerList.unregisterAll(this);
Bukkit.getServer().getScheduler().cancelTasks(this);
debug = null;
adventure.close();
adventure = null;
}

public @NotNull ServerImplementation getFoliaScheduler() {
return foliaScheduler;
}

/**
* @return the MechanicsCore plugin instance
*/
Expand Down
47 changes: 23 additions & 24 deletions MechanicsCore/src/main/java/me/deecaad/core/database/Database.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,14 @@

import me.deecaad.core.MechanicsCore;
import me.deecaad.core.utils.LogLevel;
import org.bukkit.scheduler.BukkitRunnable;

import org.jetbrains.annotations.Nullable;
import java.sql.*;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.function.Consumer;

public abstract class Database {
Expand Down Expand Up @@ -66,11 +70,7 @@ public void executeUpdate(boolean forceSync, String... sql) {
return;
}

new BukkitRunnable() {
public void run() {
executeUpdate(sql);
}
}.runTaskAsynchronously(MechanicsCore.getPlugin());
MechanicsCore.getPlugin().getFoliaScheduler().async().runNow(() -> executeUpdate(sql));
}

private void executeUpdate(String... sql) {
Expand Down Expand Up @@ -130,23 +130,22 @@ private void executeUpdate(String... sql) {
public void executeQuery(String sql, Consumer<ResultSet> consumer) {
if (sql == null || sql.isEmpty() || consumer == null)
throw new IllegalArgumentException("Empty statement or null consumer");
new BukkitRunnable() {
public void run() {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
connection = getConnection();
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
consumer.accept(resultSet);
} catch (SQLException e) {
MechanicsCore.debug.log(LogLevel.ERROR, e);
} finally {
close(connection, preparedStatement, resultSet);
}

MechanicsCore.getPlugin().getFoliaScheduler().async().runNow(() -> {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
connection = getConnection();
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
consumer.accept(resultSet);
} catch (SQLException e) {
MechanicsCore.debug.log(LogLevel.ERROR, e);
} finally {
close(connection, preparedStatement, resultSet);
}
}.runTaskAsynchronously(MechanicsCore.getPlugin());
});
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;

import java.lang.reflect.Field;
import java.util.HashSet;
Expand Down Expand Up @@ -122,12 +121,7 @@ public void onDrop(PlayerDropItemEvent event) {

// Register, then unregister in 1 tick
Bukkit.getPluginManager().registerEvents(listener, MechanicsCore.getPlugin());
new BukkitRunnable() {
@Override
public void run() {
HandlerList.unregisterAll(listener);
}
}.runTask(MechanicsCore.getPlugin());
MechanicsCore.getPlugin().getFoliaScheduler().global().run(() -> HandlerList.unregisterAll(listener));
}
}

Expand Down
Loading

0 comments on commit 0cd878d

Please sign in to comment.