mirror of
https://github.com/plexusorg/Plex.git
synced 2025-07-06 09:36:40 +00:00
Add Folia support minus world generation
This commit is contained in:
@ -2,7 +2,6 @@ package dev.plex.services;
|
||||
|
||||
import dev.plex.PlexBase;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
public abstract class AbstractService implements IService, PlexBase
|
||||
@ -10,9 +9,6 @@ public abstract class AbstractService implements IService, PlexBase
|
||||
private final boolean asynchronous;
|
||||
private final boolean repeating;
|
||||
|
||||
@Setter
|
||||
private int taskId;
|
||||
|
||||
public AbstractService(boolean repeating, boolean async)
|
||||
{
|
||||
this.repeating = repeating;
|
||||
@ -21,11 +17,9 @@ public abstract class AbstractService implements IService, PlexBase
|
||||
|
||||
public void onStart()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void onEnd()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,10 @@
|
||||
package dev.plex.services;
|
||||
|
||||
import io.papermc.paper.threadedregions.scheduler.ScheduledTask;
|
||||
|
||||
public interface IService
|
||||
{
|
||||
void run();
|
||||
void run(ScheduledTask scheduledTask);
|
||||
|
||||
int repeatInSeconds();
|
||||
}
|
||||
|
@ -2,11 +2,15 @@ package dev.plex.services;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.services.impl.*;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
import dev.plex.services.impl.AutoWipeService;
|
||||
import dev.plex.services.impl.BanService;
|
||||
import dev.plex.services.impl.CommandBlockerService;
|
||||
import dev.plex.services.impl.GameRuleService;
|
||||
import dev.plex.services.impl.TimingService;
|
||||
import dev.plex.services.impl.UpdateCheckerService;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
public class ServiceManager
|
||||
{
|
||||
@ -24,10 +28,7 @@ public class ServiceManager
|
||||
|
||||
public void startServices()
|
||||
{
|
||||
for (AbstractService service : services)
|
||||
{
|
||||
startService(service);
|
||||
}
|
||||
services.forEach(this::startService);
|
||||
}
|
||||
|
||||
public void endServices()
|
||||
@ -45,26 +46,22 @@ public class ServiceManager
|
||||
if (!service.isRepeating())
|
||||
{
|
||||
int time = service.repeatInSeconds();
|
||||
BukkitTask task;
|
||||
if (time == 0)
|
||||
{
|
||||
task = Bukkit.getScheduler().runTask(Plex.get(), service::run);
|
||||
Bukkit.getGlobalRegionScheduler().run(Plex.get(), service::run);
|
||||
}
|
||||
else
|
||||
{
|
||||
task = Bukkit.getScheduler().runTaskLater(Plex.get(), service::run, time);
|
||||
Bukkit.getAsyncScheduler().runDelayed(Plex.get(), service::run, time, TimeUnit.SECONDS);
|
||||
}
|
||||
service.setTaskId(task.getTaskId());
|
||||
}
|
||||
else if (service.isRepeating() && service.isAsynchronous())
|
||||
{
|
||||
BukkitTask task = Bukkit.getScheduler().runTaskTimerAsynchronously(Plex.get(), service::run, 0, 20L * service.repeatInSeconds());
|
||||
service.setTaskId(task.getTaskId());
|
||||
Bukkit.getAsyncScheduler().runAtFixedRate(Plex.get(), service::run, 1, service.repeatInSeconds(), TimeUnit.SECONDS);
|
||||
}
|
||||
else if (service.isRepeating() && !service.isAsynchronous())
|
||||
{
|
||||
BukkitTask task = Bukkit.getScheduler().runTaskTimer(Plex.get(), service::run, 0, 20L * service.repeatInSeconds());
|
||||
service.setTaskId(task.getTaskId());
|
||||
Bukkit.getGlobalRegionScheduler().runAtFixedRate(Plex.get(), service::run, 1, 20L * service.repeatInSeconds());
|
||||
}
|
||||
if (!services.contains(service))
|
||||
{
|
||||
@ -75,7 +72,8 @@ public class ServiceManager
|
||||
|
||||
public void endService(AbstractService service, boolean remove)
|
||||
{
|
||||
Bukkit.getScheduler().cancelTask(service.getTaskId());
|
||||
Bukkit.getGlobalRegionScheduler().cancelTasks(Plex.get());
|
||||
Bukkit.getAsyncScheduler().cancelTasks(Plex.get());
|
||||
service.onEnd();
|
||||
if (remove)
|
||||
{
|
||||
|
@ -2,12 +2,13 @@ package dev.plex.services.impl;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.services.AbstractService;
|
||||
import dev.plex.util.PlexLog;
|
||||
import io.papermc.paper.threadedregions.scheduler.ScheduledTask;
|
||||
import java.util.List;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class AutoWipeService extends AbstractService
|
||||
{
|
||||
public AutoWipeService()
|
||||
@ -16,7 +17,7 @@ public class AutoWipeService extends AbstractService
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
public void run(ScheduledTask task)
|
||||
{
|
||||
if (Plex.get().config.getBoolean("autowipe.enabled"))
|
||||
{
|
||||
@ -28,13 +29,32 @@ public class AutoWipeService extends AbstractService
|
||||
{
|
||||
if (entities.stream().anyMatch(entityName -> entityName.equalsIgnoreCase(entity.getType().name())))
|
||||
{
|
||||
entity.remove();
|
||||
Bukkit.getRegionScheduler().run(Plex.get(), entity.getLocation(), this::entityRun);
|
||||
PlexLog.debug("Started entity scheduler");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void entityRun(ScheduledTask task)
|
||||
{
|
||||
List<String> entities = plugin.config.getStringList("autowipe.entities");
|
||||
|
||||
for (World world : Bukkit.getWorlds())
|
||||
{
|
||||
for (Entity entity : world.getEntities())
|
||||
{
|
||||
if (entities.stream().anyMatch(entityName -> entityName.equalsIgnoreCase(entity.getType().name())))
|
||||
{
|
||||
PlexLog.debug("Removed entity " + entity.getName());
|
||||
entity.remove();
|
||||
task.cancel();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int repeatInSeconds()
|
||||
{
|
||||
|
@ -3,6 +3,7 @@ package dev.plex.services.impl;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.services.AbstractService;
|
||||
import dev.plex.util.TimeUtils;
|
||||
import io.papermc.paper.threadedregions.scheduler.ScheduledTask;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
@ -17,7 +18,7 @@ public class BanService extends AbstractService
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
public void run(ScheduledTask task)
|
||||
{
|
||||
Plex.get().getPunishmentManager().getActiveBans().whenComplete((punishments, throwable) ->
|
||||
{
|
||||
|
@ -5,6 +5,7 @@ import dev.plex.command.blocking.BlockedCommand;
|
||||
import dev.plex.services.AbstractService;
|
||||
import dev.plex.util.PlexLog;
|
||||
import dev.plex.util.PlexUtils;
|
||||
import io.papermc.paper.threadedregions.scheduler.ScheduledTask;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.command.Command;
|
||||
|
||||
@ -22,7 +23,7 @@ public class CommandBlockerService extends AbstractService
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
public void run(ScheduledTask task)
|
||||
{
|
||||
BLOCKED_COMMANDS.clear();
|
||||
plugin.commands.getStringList("commands").forEach(s ->
|
||||
|
@ -3,6 +3,7 @@ package dev.plex.services.impl;
|
||||
import dev.plex.services.AbstractService;
|
||||
import dev.plex.util.GameRuleUtil;
|
||||
import dev.plex.util.PlexLog;
|
||||
import io.papermc.paper.threadedregions.scheduler.ScheduledTask;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
|
||||
@ -16,7 +17,7 @@ public class GameRuleService extends AbstractService
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
public void run(ScheduledTask task)
|
||||
{
|
||||
for (World world : Bukkit.getWorlds())
|
||||
{
|
||||
|
@ -7,6 +7,7 @@ import dev.plex.punishment.PunishmentType;
|
||||
import dev.plex.services.AbstractService;
|
||||
import dev.plex.util.PlexLog;
|
||||
import dev.plex.util.TimeUtils;
|
||||
import io.papermc.paper.threadedregions.scheduler.ScheduledTask;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@ -26,7 +27,7 @@ public class TimingService extends AbstractService
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
public void run(ScheduledTask task)
|
||||
{
|
||||
spamCooldown.clear();
|
||||
nukerCooldown.clear();
|
||||
|
@ -1,6 +1,7 @@
|
||||
package dev.plex.services.impl;
|
||||
|
||||
import dev.plex.services.AbstractService;
|
||||
import io.papermc.paper.threadedregions.scheduler.ScheduledTask;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
public class UpdateCheckerService extends AbstractService
|
||||
@ -13,7 +14,7 @@ public class UpdateCheckerService extends AbstractService
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
public void run(ScheduledTask task)
|
||||
{
|
||||
if (!newVersion)
|
||||
{
|
||||
|
Reference in New Issue
Block a user