Folia support

Co-authored-by: Janet Blackquill <uhhadd@gmail.com>
This commit is contained in:
Zoë Gidiere
2023-10-02 00:21:09 -06:00
parent 2d2bba20b6
commit 27eebf6a47
10 changed files with 32 additions and 10 deletions

View File

@@ -48,6 +48,9 @@ fun Project.configureDependencies() {
maven("https://jitpack.io") { maven("https://jitpack.io") {
name = "JitPack" name = "JitPack"
} }
maven("https://nexuslite.gcnt.net/repos/other/") {
name = "devmart-other"
}
} }
dependencies { dependencies {

View File

@@ -50,6 +50,7 @@ object Versions {
object Bukkit { object Bukkit {
const val paper = "1.18.2-R0.1-SNAPSHOT" const val paper = "1.18.2-R0.1-SNAPSHOT"
const val paperLib = "1.0.5" const val paperLib = "1.0.5"
const val foliaLib = "0.2.5"
const val minecraft = "1.20.2" const val minecraft = "1.20.2"
const val reflectionRemapper = "0.1.0-SNAPSHOT" const val reflectionRemapper = "0.1.0-SNAPSHOT"
const val paperDevBundle = "1.20.2-R0.1-SNAPSHOT" const val paperDevBundle = "1.20.2-R0.1-SNAPSHOT"

View File

@@ -3,7 +3,9 @@ plugins {
} }
repositories { repositories {
maven("https://s01.oss.sonatype.org/content/repositories/snapshots/") maven("https://s01.oss.sonatype.org/content/repositories/snapshots/") {
name = "sonatype"
}
} }
dependencies { dependencies {
@@ -20,6 +22,7 @@ dependencies {
tasks { tasks {
shadowJar { shadowJar {
relocate("io.papermc.lib", "com.dfsek.terra.lib.paperlib") relocate("io.papermc.lib", "com.dfsek.terra.lib.paperlib")
relocate("com.tcoded.folialib", "com.dfsek.terra.lib.folialib")
relocate("com.google.common", "com.dfsek.terra.lib.google.common") relocate("com.google.common", "com.dfsek.terra.lib.google.common")
relocate("org.apache.logging.slf4j", "com.dfsek.terra.lib.slf4j-over-log4j") relocate("org.apache.logging.slf4j", "com.dfsek.terra.lib.slf4j-over-log4j")
exclude("org/slf4j/**") exclude("org/slf4j/**")

View File

@@ -8,6 +8,7 @@ dependencies {
compileOnly("io.papermc.paper", "paper-api", Versions.Bukkit.paper) compileOnly("io.papermc.paper", "paper-api", Versions.Bukkit.paper)
shadedApi("io.papermc", "paperlib", Versions.Bukkit.paperLib) shadedApi("io.papermc", "paperlib", Versions.Bukkit.paperLib)
shadedApi("com.tcoded", "FoliaLib" , Versions.Bukkit.foliaLib)
shadedApi("com.google.guava", "guava", Versions.Libraries.Internal.guava) shadedApi("com.google.guava", "guava", Versions.Libraries.Internal.guava)
shadedApi("cloud.commandframework", "cloud-paper", Versions.Libraries.cloud) shadedApi("cloud.commandframework", "cloud-paper", Versions.Libraries.cloud)

View File

@@ -17,6 +17,7 @@
package com.dfsek.terra.bukkit; package com.dfsek.terra.bukkit;
import io.papermc.lib.PaperLib;
import org.bukkit.Location; import org.bukkit.Location;
import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.Entity;
@@ -44,14 +45,14 @@ public class BukkitEntity implements Entity {
@Override @Override
public void position(Vector3 location) { public void position(Vector3 location) {
entity.teleport(BukkitAdapter.adapt(location).toLocation(entity.getWorld())); PaperLib.teleportAsync(entity, BukkitAdapter.adapt(location).toLocation(entity.getWorld()));
} }
@Override @Override
public void world(ServerWorld world) { public void world(ServerWorld world) {
Location newLoc = entity.getLocation().clone(); Location newLoc = entity.getLocation().clone();
newLoc.setWorld(BukkitAdapter.adapt(world)); newLoc.setWorld(BukkitAdapter.adapt(world));
entity.teleport(newLoc); PaperLib.teleportAsync(entity, newLoc);
} }
@Override @Override

View File

@@ -17,6 +17,7 @@
package com.dfsek.terra.bukkit; package com.dfsek.terra.bukkit;
import io.papermc.lib.PaperLib;
import org.bukkit.Location; import org.bukkit.Location;
import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.entity.Player;
@@ -45,14 +46,14 @@ public class BukkitPlayer implements Player {
@Override @Override
public void position(Vector3 location) { public void position(Vector3 location) {
delegate.teleport(BukkitAdapter.adapt(location).toLocation(delegate.getWorld())); PaperLib.teleportAsync(delegate, BukkitAdapter.adapt(location).toLocation(delegate.getWorld()));
} }
@Override @Override
public void world(ServerWorld world) { public void world(ServerWorld world) {
Location newLoc = delegate.getLocation().clone(); Location newLoc = delegate.getLocation().clone();
newLoc.setWorld(BukkitAdapter.adapt(world)); newLoc.setWorld(BukkitAdapter.adapt(world));
delegate.teleport(newLoc); PaperLib.teleportAsync(delegate, newLoc);
} }
@Override @Override

View File

@@ -20,6 +20,7 @@ package com.dfsek.terra.bukkit;
import com.dfsek.tectonic.api.TypeRegistry; import com.dfsek.tectonic.api.TypeRegistry;
import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.depth.DepthTracker;
import com.dfsek.tectonic.api.exception.LoadException; import com.dfsek.tectonic.api.exception.LoadException;
import com.tcoded.folialib.wrapper.task.WrappedTask;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -29,6 +30,7 @@ import org.slf4j.LoggerFactory;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.function.Consumer;
import com.dfsek.terra.AbstractPlatform; import com.dfsek.terra.AbstractPlatform;
import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.addon.BaseAddon;
@@ -85,7 +87,7 @@ public class PlatformImpl extends AbstractPlatform {
@Override @Override
public void runPossiblyUnsafeTask(@NotNull Runnable task) { public void runPossiblyUnsafeTask(@NotNull Runnable task) {
Bukkit.getScheduler().runTask(plugin, task); plugin.getFoliaLib().getImpl().runAsync(task);
} }
@Override @Override

View File

@@ -42,6 +42,7 @@ import com.dfsek.terra.bukkit.nms.Initializer;
import com.dfsek.terra.bukkit.util.PaperUtil; import com.dfsek.terra.bukkit.util.PaperUtil;
import com.dfsek.terra.bukkit.util.VersionUtil; import com.dfsek.terra.bukkit.util.VersionUtil;
import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.tcoded.folialib.FoliaLib;
public class TerraBukkitPlugin extends JavaPlugin { public class TerraBukkitPlugin extends JavaPlugin {
@@ -50,6 +51,8 @@ public class TerraBukkitPlugin extends JavaPlugin {
private final PlatformImpl platform = new PlatformImpl(this); private final PlatformImpl platform = new PlatformImpl(this);
private final Map<String, com.dfsek.terra.api.world.chunk.generation.ChunkGenerator> generatorMap = new HashMap<>(); private final Map<String, com.dfsek.terra.api.world.chunk.generation.ChunkGenerator> generatorMap = new HashMap<>();
private final FoliaLib foliaLib = new FoliaLib(this);
@Override @Override
public void onEnable() { public void onEnable() {
if(!doVersionCheck()) { if(!doVersionCheck()) {
@@ -150,7 +153,7 @@ public class TerraBukkitPlugin extends JavaPlugin {
""".strip()); """.strip());
}; };
runnable.run(); runnable.run();
Bukkit.getScheduler().scheduleAsyncDelayedTask(this, runnable, 200L); getFoliaLib().getImpl().runLaterAsync(runnable, 200L);
// Bukkit.shutdown(); // we're not *that* evil // Bukkit.shutdown(); // we're not *that* evil
Bukkit.getPluginManager().disablePlugin(this); Bukkit.getPluginManager().disablePlugin(this);
return false; return false;
@@ -177,4 +180,8 @@ public class TerraBukkitPlugin extends JavaPlugin {
return pack.getGeneratorProvider().newInstance(pack); return pack.getGeneratorProvider().newInstance(pack);
}), platform.getRawConfigRegistry().getByID(id).orElseThrow(), platform.getWorldHandle().air()); }), platform.getRawConfigRegistry().getByID(id).orElseThrow(), platform.getWorldHandle().air());
} }
public FoliaLib getFoliaLib() {
return foliaLib;
}
} }

View File

@@ -17,6 +17,8 @@
package com.dfsek.terra.bukkit.util; package com.dfsek.terra.bukkit.util;
import com.dfsek.terra.bukkit.TerraBukkitPlugin;
import io.papermc.lib.PaperLib; import io.papermc.lib.PaperLib;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
@@ -25,10 +27,10 @@ import static io.papermc.lib.PaperLib.suggestPaper;
public final class PaperUtil { public final class PaperUtil {
public static void checkPaper(JavaPlugin main) { public static void checkPaper(TerraBukkitPlugin plugin) {
Bukkit.getScheduler().scheduleSyncDelayedTask(main, () -> { plugin.getFoliaLib().getImpl().runLaterAsync(() -> {
if(!PaperLib.isPaper()) { if(!PaperLib.isPaper()) {
suggestPaper(main); suggestPaper(plugin);
} }
}, 100L); }, 100L);
} }

View File

@@ -6,3 +6,4 @@ author: dfsek
website: "@WIKI@" website: "@WIKI@"
api-version: "1.13" api-version: "1.13"
description: "@DESCRIPTION@" description: "@DESCRIPTION@"
folia-supported: true