forked from SteamWar/SteamWar
Use @LinkedTimer for the timers of linked classes
The repeating timers that linked classes and the plugin main classes started once for the whole runtime now use @LinkedTimer, on Spigot (BauSystem, SpigotCore, LobbySystem, MissileWars, TowerRun, Teamserver) and Velocity. The FightInfoPacketSenders of MissileWars and TowerRun are linked themselves instead of being started by the main class.
This commit is contained in:
+7
-7
@@ -24,6 +24,7 @@ import de.steamwar.bausystem.Permission;
|
|||||||
import de.steamwar.bausystem.utils.BauMemberUpdateEvent;
|
import de.steamwar.bausystem.utils.BauMemberUpdateEvent;
|
||||||
import de.steamwar.core.SWPlayer;
|
import de.steamwar.core.SWPlayer;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@@ -43,13 +44,12 @@ public class ObserverTracerListener implements Listener {
|
|||||||
|
|
||||||
static Set<Player> enabled = new HashSet<>();
|
static Set<Player> enabled = new HashSet<>();
|
||||||
|
|
||||||
public ObserverTracerListener() {
|
@LinkedTimer(delay = 15, period = 15)
|
||||||
Bukkit.getScheduler().runTaskTimer(BauSystem.getInstance(), () -> {
|
private void showTracers() {
|
||||||
SWPlayer.allWithSingleComponent(ObserverTracer.class).forEach(pair -> {
|
SWPlayer.allWithSingleComponent(ObserverTracer.class).forEach(pair -> {
|
||||||
if (pair.getSwPlayer().getPlayer().getGameMode() != GameMode.SPECTATOR) return;
|
if (pair.getSwPlayer().getPlayer().getGameMode() != GameMode.SPECTATOR) return;
|
||||||
pair.getComponent().show();
|
pair.getComponent().show();
|
||||||
});
|
});
|
||||||
}, 15L, 15L);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|||||||
+10
-8
@@ -28,6 +28,7 @@ import de.steamwar.command.SWCommand;
|
|||||||
import de.steamwar.entity.CRay;
|
import de.steamwar.entity.CRay;
|
||||||
import de.steamwar.entity.REntityServer;
|
import de.steamwar.entity.REntityServer;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -104,15 +105,16 @@ public class RayVisualizerCommand extends SWCommand implements Listener {
|
|||||||
|
|
||||||
public RayVisualizerCommand() {
|
public RayVisualizerCommand() {
|
||||||
super("rayvisualizer");
|
super("rayvisualizer");
|
||||||
|
}
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskTimer(BauSystem.getInstance(), () -> {
|
@LinkedTimer(delay = 1, period = 1)
|
||||||
if (server.getPlayers().isEmpty()) return;
|
private void updateRays() {
|
||||||
List<TNTPrimed> primedList = WORLD.getEntitiesByClass(TNTPrimed.class)
|
if (server.getPlayers().isEmpty()) return;
|
||||||
.stream().toList();
|
List<TNTPrimed> primedList = WORLD.getEntitiesByClass(TNTPrimed.class)
|
||||||
rayData.reset();
|
.stream().toList();
|
||||||
if (primedList.isEmpty()) return;
|
rayData.reset();
|
||||||
calculateRays(primedList, primedList);
|
if (primedList.isEmpty()) return;
|
||||||
}, 1, 1);
|
calculateRays(primedList, primedList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void calculateRays(List<TNTPrimed> fromTNTs, List<TNTPrimed> toTNTs) {
|
private void calculateRays(List<TNTPrimed> fromTNTs, List<TNTPrimed> toTNTs) {
|
||||||
|
|||||||
+7
-7
@@ -27,6 +27,7 @@ import de.steamwar.bausystem.features.script.lua.libs.StorageLib;
|
|||||||
import de.steamwar.bausystem.region.Region;
|
import de.steamwar.bausystem.region.Region;
|
||||||
import de.steamwar.core.SWPlayer;
|
import de.steamwar.core.SWPlayer;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
@@ -47,13 +48,12 @@ import org.luaj.vm2.LuaValue;
|
|||||||
@Linked
|
@Linked
|
||||||
public class EventListener implements Listener {
|
public class EventListener implements Listener {
|
||||||
|
|
||||||
static {
|
@LinkedTimer(delay = 1, period = 1)
|
||||||
Bukkit.getScheduler().runTaskTimer(BauSystem.getInstance(), () -> {
|
private static void resetLastF() {
|
||||||
long millis = System.currentTimeMillis();
|
long millis = System.currentTimeMillis();
|
||||||
SWPlayer.allWithSingleComponent(ScriptRunner.ScriptData.class)
|
SWPlayer.allWithSingleComponent(ScriptRunner.ScriptData.class)
|
||||||
.filter(pair -> millis - pair.getComponent().getLastF() > 200)
|
.filter(pair -> millis - pair.getComponent().getLastF() > 200)
|
||||||
.forEach(pair -> pair.getComponent().setLastF(Long.MAX_VALUE));
|
.forEach(pair -> pair.getComponent().setLastF(Long.MAX_VALUE));
|
||||||
}, 1, 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
|||||||
+5
-6
@@ -44,9 +44,9 @@ import de.steamwar.entity.REntity;
|
|||||||
import de.steamwar.entity.REntityServer;
|
import de.steamwar.entity.REntityServer;
|
||||||
import de.steamwar.inventory.SWAnvilInv;
|
import de.steamwar.inventory.SWAnvilInv;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -136,11 +136,10 @@ public class SimulatorCursor implements Listener {
|
|||||||
|
|
||||||
private static final Map<Player, Long> LAST_SNEAKS = new HashMap<>();
|
private static final Map<Player, Long> LAST_SNEAKS = new HashMap<>();
|
||||||
|
|
||||||
static {
|
@LinkedTimer(delay = 1, period = 1)
|
||||||
Bukkit.getScheduler().runTaskTimer(BauSystem.getInstance(), () -> {
|
private static void clearLastSneaks() {
|
||||||
long millis = System.currentTimeMillis();
|
long millis = System.currentTimeMillis();
|
||||||
LAST_SNEAKS.entrySet().removeIf(entry -> millis - entry.getValue() > 200);
|
LAST_SNEAKS.entrySet().removeIf(entry -> millis - entry.getValue() > 200);
|
||||||
}, 1, 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
|
|||||||
+11
-13
@@ -19,11 +19,10 @@
|
|||||||
|
|
||||||
package de.steamwar.bausystem.features.team.boundary;
|
package de.steamwar.bausystem.features.team.boundary;
|
||||||
|
|
||||||
import de.steamwar.bausystem.BauSystem;
|
|
||||||
import de.steamwar.bausystem.region.Point;
|
import de.steamwar.bausystem.region.Point;
|
||||||
import de.steamwar.bausystem.region.Region;
|
import de.steamwar.bausystem.region.Region;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import org.bukkit.Bukkit;
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import org.bukkit.Particle;
|
import org.bukkit.Particle;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
@@ -38,17 +37,16 @@ public class BoundaryViewer implements Listener {
|
|||||||
|
|
||||||
public static Set<Player> viewers = new HashSet<>();
|
public static Set<Player> viewers = new HashSet<>();
|
||||||
|
|
||||||
{
|
@LinkedTimer(delay = 20, period = 20)
|
||||||
Bukkit.getScheduler().runTaskTimer(BauSystem.getInstance(), () -> {
|
private void showBoundaries() {
|
||||||
if (viewers.isEmpty()) {
|
if (viewers.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
viewers.forEach(player -> {
|
viewers.forEach(player -> {
|
||||||
Region region = Region.getRegion(player.getLocation());
|
Region region = Region.getRegion(player.getLocation());
|
||||||
if (region.getType().isGlobal()) return;
|
if (region.getType().isGlobal()) return;
|
||||||
showRegion(region, player);
|
showRegion(region, player);
|
||||||
});
|
});
|
||||||
}, 20, 20);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showRegion(Region region, Player player) {
|
private void showRegion(Region region, Player player) {
|
||||||
|
|||||||
+10
-10
@@ -23,6 +23,7 @@ import de.steamwar.bausystem.BauSystem;
|
|||||||
import de.steamwar.core.CRIUWakeupEvent;
|
import de.steamwar.core.CRIUWakeupEvent;
|
||||||
import de.steamwar.core.CheckpointUtils;
|
import de.steamwar.core.CheckpointUtils;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -38,17 +39,16 @@ public class AFKStopperListener implements Listener {
|
|||||||
|
|
||||||
private long lastMovementTime = System.currentTimeMillis();
|
private long lastMovementTime = System.currentTimeMillis();
|
||||||
|
|
||||||
public AFKStopperListener() {
|
@LinkedTimer(delay = 1, period = 1, unit = LinkedTimer.Unit.MINUTES)
|
||||||
Bukkit.getScheduler().runTaskTimer(BauSystem.getInstance(), () -> {
|
private void checkAfk() {
|
||||||
long currentTime = System.currentTimeMillis();
|
long currentTime = System.currentTimeMillis();
|
||||||
if (currentTime - lastMovementTime > 10 * 60000) { // 10 Minutes
|
if (currentTime - lastMovementTime > 10 * 60000) { // 10 Minutes
|
||||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||||
p.kickPlayer(BauSystem.MESSAGE.parse("AFK_KICK_MESSAGE", p));
|
p.kickPlayer(BauSystem.MESSAGE.parse("AFK_KICK_MESSAGE", p));
|
||||||
}
|
|
||||||
} else if (currentTime - lastMovementTime > 9 * 60000) {
|
|
||||||
BauSystem.MESSAGE.broadcast("AFK_WARNING_MESSAGE");
|
|
||||||
}
|
}
|
||||||
}, 1200, 1200); //every minute
|
} else if (currentTime - lastMovementTime > 9 * 60000) {
|
||||||
|
BauSystem.MESSAGE.broadcast("AFK_WARNING_MESSAGE");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
package de.steamwar.lobby.jumpandrun;
|
package de.steamwar.lobby.jumpandrun;
|
||||||
|
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import de.steamwar.lobby.LobbySystem;
|
import de.steamwar.lobby.LobbySystem;
|
||||||
import de.steamwar.lobby.listener.PlayerSpawn;
|
import de.steamwar.lobby.listener.PlayerSpawn;
|
||||||
import de.steamwar.lobby.util.LeaderboardManager;
|
import de.steamwar.lobby.util.LeaderboardManager;
|
||||||
@@ -60,52 +61,51 @@ public class JumpAndRun implements Listener {
|
|||||||
|
|
||||||
private static final LeaderboardManager LEADERBOARD = new LeaderboardManager(LobbySystem.getEntityServer(false), JUMP_AND_RUN_CONFIG, new Location(Bukkit.getWorlds().get(0), 2338.5, 42.5, 1231.5));
|
private static final LeaderboardManager LEADERBOARD = new LeaderboardManager(LobbySystem.getEntityServer(false), JUMP_AND_RUN_CONFIG, new Location(Bukkit.getWorlds().get(0), 2338.5, 42.5, 1231.5));
|
||||||
|
|
||||||
{
|
@LinkedTimer(delay = 1, period = 1)
|
||||||
Bukkit.getScheduler().runTaskTimer(LobbySystem.getInstance(), () -> {
|
private void updatePlayers() {
|
||||||
Set<Player> toReset = new HashSet<>();
|
Set<Player> toReset = new HashSet<>();
|
||||||
CURRENT_POS.forEach((player, index) -> {
|
CURRENT_POS.forEach((player, index) -> {
|
||||||
if (System.currentTimeMillis() - CLICKED.getOrDefault(player, 0L) > 500) {
|
if (System.currentTimeMillis() - CLICKED.getOrDefault(player, 0L) > 500) {
|
||||||
CLICKED.remove(player);
|
CLICKED.remove(player);
|
||||||
CLICKED_COUNT.remove(player);
|
CLICKED_COUNT.remove(player);
|
||||||
} else {
|
} else {
|
||||||
CLICKED_COUNT.put(player, CLICKED_COUNT.getOrDefault(player, -1) + 1);
|
CLICKED_COUNT.put(player, CLICKED_COUNT.getOrDefault(player, -1) + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
Location location = player.getLocation();
|
Location location = player.getLocation();
|
||||||
Vector point = points.get(index);
|
Vector point = points.get(index);
|
||||||
if (index < points.size() - 1) {
|
if (index < points.size() - 1) {
|
||||||
Vector nextPoint = points.get(index + 1);
|
Vector nextPoint = points.get(index + 1);
|
||||||
double y = Math.min(point.getY(), nextPoint.getY()) - 2;
|
double y = Math.min(point.getY(), nextPoint.getY()) - 2;
|
||||||
if (location.getY() < y) {
|
if (location.getY() < y) {
|
||||||
location.setX(point.getX());
|
location.setX(point.getX());
|
||||||
location.setY(point.getY());
|
location.setY(point.getY());
|
||||||
location.setZ(point.getZ());
|
location.setZ(point.getZ());
|
||||||
player.teleport(location);
|
player.teleport(location);
|
||||||
player.playSound(location, Sound.ENTITY_ENDERMAN_TELEPORT, 1, 1);
|
player.playSound(location, Sound.ENTITY_ENDERMAN_TELEPORT, 1, 1);
|
||||||
FAILS.put(player, FAILS.getOrDefault(player, 0) + 1);
|
FAILS.put(player, FAILS.getOrDefault(player, 0) + 1);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int count = CLICKED_COUNT.getOrDefault(player, -1);
|
int count = CLICKED_COUNT.getOrDefault(player, -1);
|
||||||
if (count >= 0) {
|
if (count >= 0) {
|
||||||
if (count > 20) {
|
if (count > 20) {
|
||||||
toReset.add(player);
|
toReset.add(player);
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
count = Math.min(count / 2, 30);
|
|
||||||
LobbySystem.getMessage().sendPrefixless("JUMP_AND_RUN_CANCEL", player, ChatMessageType.ACTION_BAR, "§e" + BAR_EMPTY.substring(0, count) + "§7" + BAR_EMPTY.substring(count));
|
|
||||||
} else {
|
|
||||||
long time = System.currentTimeMillis() - START.get(player);
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat(LobbySystem.getMessage().parse("JUMP_AND_RUN_TIME", player), Locale.ROOT);
|
|
||||||
String parsed = format.format(new Date(time));
|
|
||||||
LobbySystem.getMessage().sendPrefixless("JUMP_AND_RUN_PROGRESS", player, ChatMessageType.ACTION_BAR, index + 1, points.size(), FAILS.get(player), parsed);
|
|
||||||
}
|
}
|
||||||
});
|
count = Math.min(count / 2, 30);
|
||||||
toReset.forEach(player -> {
|
LobbySystem.getMessage().sendPrefixless("JUMP_AND_RUN_CANCEL", player, ChatMessageType.ACTION_BAR, "§e" + BAR_EMPTY.substring(0, count) + "§7" + BAR_EMPTY.substring(count));
|
||||||
reset(player);
|
} else {
|
||||||
player.teleport(Bukkit.getWorlds().get(0).getSpawnLocation().clone().add(0.5, 0, 0.5));
|
long time = System.currentTimeMillis() - START.get(player);
|
||||||
});
|
SimpleDateFormat format = new SimpleDateFormat(LobbySystem.getMessage().parse("JUMP_AND_RUN_TIME", player), Locale.ROOT);
|
||||||
}, 1, 1);
|
String parsed = format.format(new Date(time));
|
||||||
|
LobbySystem.getMessage().sendPrefixless("JUMP_AND_RUN_PROGRESS", player, ChatMessageType.ACTION_BAR, index + 1, points.size(), FAILS.get(player), parsed);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
toReset.forEach(player -> {
|
||||||
|
reset(player);
|
||||||
|
player.teleport(Bukkit.getWorlds().get(0).getSpawnLocation().clone().add(0.5, 0, 0.5));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isPlayerInJumpAndRun(Player player) {
|
public static boolean isPlayerInJumpAndRun(Player player) {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
package de.steamwar.lobby.listener;
|
package de.steamwar.lobby.listener;
|
||||||
|
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.lobby.LobbySystem;
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.block.data.Bisected;
|
import org.bukkit.block.data.Bisected;
|
||||||
import org.bukkit.block.data.type.Stairs;
|
import org.bukkit.block.data.type.Stairs;
|
||||||
@@ -34,7 +34,6 @@ import org.bukkit.event.block.Action;
|
|||||||
import org.bukkit.event.entity.EntityDismountEvent;
|
import org.bukkit.event.entity.EntityDismountEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -46,15 +45,11 @@ public class PlayerSeatListener implements Listener {
|
|||||||
|
|
||||||
private Set<Location> seats = new HashSet<>();
|
private Set<Location> seats = new HashSet<>();
|
||||||
|
|
||||||
static {
|
@LinkedTimer(delay = 1, period = 1, unit = LinkedTimer.Unit.MINUTES)
|
||||||
new BukkitRunnable() {
|
private static void keepArrows() {
|
||||||
@Override
|
for (Arrow arrow : world.getEntitiesByClass(Arrow.class)) {
|
||||||
public void run() {
|
arrow.setTicksLived(1);
|
||||||
for (Arrow arrow : world.getEntitiesByClass(Arrow.class)) {
|
}
|
||||||
arrow.setTicksLived(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}.runTaskTimer(LobbySystem.getInstance(), 20 * 60, 20 * 60);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
package de.steamwar.lobby.particle;
|
package de.steamwar.lobby.particle;
|
||||||
|
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.lobby.LobbySystem;
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import de.steamwar.lobby.jumpandrun.JumpAndRun;
|
import de.steamwar.lobby.jumpandrun.JumpAndRun;
|
||||||
import de.steamwar.lobby.listener.PlayerSpawn;
|
import de.steamwar.lobby.listener.PlayerSpawn;
|
||||||
import de.steamwar.lobby.util.LobbyPlayer;
|
import de.steamwar.lobby.util.LobbyPlayer;
|
||||||
@@ -49,25 +49,24 @@ public class ParticleListener implements Listener {
|
|||||||
|
|
||||||
private static Map<Player, Integer> movingPlayers = new HashMap<>();
|
private static Map<Player, Integer> movingPlayers = new HashMap<>();
|
||||||
|
|
||||||
public ParticleListener() {
|
@LinkedTimer(delay = 0, period = 1)
|
||||||
Bukkit.getScheduler().runTaskTimer(LobbySystem.getInstance(), () -> {
|
private void tickParticles() {
|
||||||
movingPlayers.replaceAll((player, integer) -> integer - 1);
|
movingPlayers.replaceAll((player, integer) -> integer - 1);
|
||||||
movingPlayers.entrySet().removeIf(entry -> entry.getValue() <= 0);
|
movingPlayers.entrySet().removeIf(entry -> entry.getValue() <= 0);
|
||||||
deg += 0.1;
|
deg += 0.1;
|
||||||
if (deg > 360) deg = 0;
|
if (deg > 360) deg = 0;
|
||||||
Bukkit.getOnlinePlayers().forEach(player -> {
|
Bukkit.getOnlinePlayers().forEach(player -> {
|
||||||
if (disabled(player)) return;
|
if (disabled(player)) return;
|
||||||
if (JumpAndRun.isPlayerInJumpAndRun(player)) return;
|
if (JumpAndRun.isPlayerInJumpAndRun(player)) return;
|
||||||
LobbyPlayer lobbyPlayer = LobbyPlayer.getLobbyPlayer(player.getUniqueId());
|
LobbyPlayer lobbyPlayer = LobbyPlayer.getLobbyPlayer(player.getUniqueId());
|
||||||
ParticleEnum particle = lobbyPlayer.getParticle();
|
ParticleEnum particle = lobbyPlayer.getParticle();
|
||||||
if (particle == null) return;
|
if (particle == null) return;
|
||||||
ParticleData particleData = particle.getParticle();
|
ParticleData particleData = particle.getParticle();
|
||||||
ParticleElement particleElement = particleData.getParticleElement();
|
ParticleElement particleElement = particleData.getParticleElement();
|
||||||
if (particleElement.tickType() == ParticleTickType.ALWAYS) {
|
if (particleElement.tickType() == ParticleTickType.ALWAYS) {
|
||||||
particleElement.tick(new ParticleTickData(player.getWorld(), player, deg, movingPlayers.containsKey(player)));
|
particleElement.tick(new ParticleTickData(player.getWorld(), player, deg, movingPlayers.containsKey(player)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, 0, 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL)
|
@EventHandler(priority = EventPriority.NORMAL)
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
package de.steamwar.lobby.team;
|
package de.steamwar.lobby.team;
|
||||||
|
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import de.steamwar.lobby.LobbySystem;
|
import de.steamwar.lobby.LobbySystem;
|
||||||
import de.steamwar.lobby.display.NPC;
|
import de.steamwar.lobby.display.NPC;
|
||||||
import de.steamwar.sql.SteamwarUser;
|
import de.steamwar.sql.SteamwarUser;
|
||||||
@@ -76,55 +77,58 @@ public class TeamPlayer implements Listener {
|
|||||||
entities.put(name, npc);
|
entities.put(name, npc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final AtomicInteger count = new AtomicInteger();
|
||||||
|
|
||||||
{
|
{
|
||||||
SteamwarUser.getServerTeam().forEach(user -> {
|
SteamwarUser.getServerTeam().forEach(user -> {
|
||||||
spawnTeamPlayer(world, user);
|
spawnTeamPlayer(world, user);
|
||||||
});
|
});
|
||||||
|
|
||||||
AtomicInteger count = new AtomicInteger();
|
|
||||||
LobbySystem.getInstance().getLogger().log(Level.INFO, "Loaded " + entities.size() + " team players");
|
LobbySystem.getInstance().getLogger().log(Level.INFO, "Loaded " + entities.size() + " team players");
|
||||||
Bukkit.getScheduler().runTaskTimer(LobbySystem.getInstance(), () -> {
|
}
|
||||||
Collection<Villager> active = world.getEntitiesByClass(Villager.class);
|
|
||||||
if (active.size() > entities.size()) {
|
|
||||||
Set<String> duplicates = new HashSet<>();
|
|
||||||
active.stream()
|
|
||||||
.filter(villager -> !duplicates.add(villager.getCustomName()))
|
|
||||||
.forEach(Entity::remove);
|
|
||||||
}
|
|
||||||
|
|
||||||
count.incrementAndGet();
|
@LinkedTimer(delay = 1, period = 1)
|
||||||
if (count.get() % (20 * 60 * 60) == 0) {
|
private void updateTeamPlayers() {
|
||||||
count.set(0);
|
Collection<Villager> active = world.getEntitiesByClass(Villager.class);
|
||||||
List<SteamwarUser> steamwarUsers = SteamwarUser.getServerTeam();
|
if (active.size() > entities.size()) {
|
||||||
AtomicInteger added = new AtomicInteger();
|
Set<String> duplicates = new HashSet<>();
|
||||||
steamwarUsers.forEach(user -> {
|
active.stream()
|
||||||
if (!entities.containsKey(user.getUserName())) {
|
.filter(villager -> !duplicates.add(villager.getCustomName()))
|
||||||
spawnTeamPlayer(world, user);
|
.forEach(Entity::remove);
|
||||||
added.incrementAndGet();
|
}
|
||||||
}
|
|
||||||
});
|
count.incrementAndGet();
|
||||||
AtomicInteger removed = new AtomicInteger();
|
if (count.get() % (20 * 60 * 60) == 0) {
|
||||||
List<String> names = steamwarUsers.stream().map(SteamwarUser::getUserName).collect(Collectors.toList());
|
count.set(0);
|
||||||
new HashSet<>(entities.keySet()).stream().filter(name -> !names.contains(name)).forEach(name -> {
|
List<SteamwarUser> steamwarUsers = SteamwarUser.getServerTeam();
|
||||||
villagers.remove(name).remove();
|
AtomicInteger added = new AtomicInteger();
|
||||||
entities.remove(name).delete();
|
steamwarUsers.forEach(user -> {
|
||||||
removed.incrementAndGet();
|
if (!entities.containsKey(user.getUserName())) {
|
||||||
});
|
spawnTeamPlayer(world, user);
|
||||||
if (added.get() > 0 || removed.get() > 0) {
|
added.incrementAndGet();
|
||||||
LobbySystem.getInstance().getLogger().log(Level.INFO, "Loaded " + added.get() + " team players, removed " + removed.get() + " team players");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
world.getEntitiesByClasses(Villager.class).forEach(entity -> {
|
|
||||||
NPC npc = entities.get(entity.getName());
|
|
||||||
if (npc != null) {
|
|
||||||
if (illegalLocation(entity.getLocation())) {
|
|
||||||
entity.teleport(npc.getLocation());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
npc.setLocation(entity.getLocation());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, 1L, 1L);
|
AtomicInteger removed = new AtomicInteger();
|
||||||
|
List<String> names = steamwarUsers.stream().map(SteamwarUser::getUserName).collect(Collectors.toList());
|
||||||
|
new HashSet<>(entities.keySet()).stream().filter(name -> !names.contains(name)).forEach(name -> {
|
||||||
|
villagers.remove(name).remove();
|
||||||
|
entities.remove(name).delete();
|
||||||
|
removed.incrementAndGet();
|
||||||
|
});
|
||||||
|
if (added.get() > 0 || removed.get() > 0) {
|
||||||
|
LobbySystem.getInstance().getLogger().log(Level.INFO, "Loaded " + added.get() + " team players, removed " + removed.get() + " team players");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
world.getEntitiesByClasses(Villager.class).forEach(entity -> {
|
||||||
|
NPC npc = entities.get(entity.getName());
|
||||||
|
if (npc != null) {
|
||||||
|
if (illegalLocation(entity.getLocation())) {
|
||||||
|
entity.teleport(npc.getLocation());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
npc.setLocation(entity.getLocation());
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean illegalLocation(Location location) {
|
private boolean illegalLocation(Location location) {
|
||||||
|
|||||||
@@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
package de.steamwar.misslewars;
|
package de.steamwar.misslewars;
|
||||||
|
|
||||||
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import de.steamwar.network.NetworkSender;
|
import de.steamwar.network.NetworkSender;
|
||||||
import de.steamwar.network.packets.common.FightInfoPacket;
|
import de.steamwar.network.packets.common.FightInfoPacket;
|
||||||
import de.steamwar.sql.SteamwarUser;
|
import de.steamwar.sql.SteamwarUser;
|
||||||
@@ -28,6 +30,7 @@ import org.bukkit.World;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Linked
|
||||||
public class FightInfoPacketSender implements Runnable {
|
public class FightInfoPacketSender implements Runnable {
|
||||||
|
|
||||||
private final World world = Bukkit.getWorlds().get(0);
|
private final World world = Bukkit.getWorlds().get(0);
|
||||||
@@ -41,6 +44,7 @@ public class FightInfoPacketSender implements Runnable {
|
|||||||
private final int redLeader = Config.RedLeader != null ? SteamwarUser.get(Config.RedLeader).getId() : 0;
|
private final int redLeader = Config.RedLeader != null ? SteamwarUser.get(Config.RedLeader).getId() : 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@LinkedTimer(delay = 1, period = 1, unit = LinkedTimer.Unit.SECONDS)
|
||||||
public void run() {
|
public void run() {
|
||||||
if (Config.test()) {
|
if (Config.test()) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -75,8 +75,6 @@ public class MissileWars extends JavaPlugin {
|
|||||||
|
|
||||||
StateDependent.setupState(fightState);
|
StateDependent.setupState(fightState);
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskTimer(this, new FightInfoPacketSender(), 20, 20);
|
|
||||||
|
|
||||||
Bukkit.getWorlds().forEach(world -> {
|
Bukkit.getWorlds().forEach(world -> {
|
||||||
world.setGameRule(GameRule.KEEP_INVENTORY, true);
|
world.setGameRule(GameRule.KEEP_INVENTORY, true);
|
||||||
world.setGameRule(GameRule.MOB_GRIEFING, true);
|
world.setGameRule(GameRule.MOB_GRIEFING, true);
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import de.steamwar.command.TabCompletionCache;
|
|||||||
import de.steamwar.command.TypeMapper;
|
import de.steamwar.command.TypeMapper;
|
||||||
import de.steamwar.core.authlib.SteamwarGameProfileRepository;
|
import de.steamwar.core.authlib.SteamwarGameProfileRepository;
|
||||||
import de.steamwar.linkage.AbstractLinker;
|
import de.steamwar.linkage.AbstractLinker;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import de.steamwar.linkage.SpigotLinker;
|
import de.steamwar.linkage.SpigotLinker;
|
||||||
import de.steamwar.message.Message;
|
import de.steamwar.message.Message;
|
||||||
import de.steamwar.network.NetworkReceiver;
|
import de.steamwar.network.NetworkReceiver;
|
||||||
@@ -119,10 +120,6 @@ public class Core extends JavaPlugin {
|
|||||||
TinyProtocol.init();
|
TinyProtocol.init();
|
||||||
CheckpointUtils.signalHandler();
|
CheckpointUtils.signalHandler();
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskTimer(this, TabCompletionCache::invalidateOldEntries, 20, 20);
|
|
||||||
Bukkit.getScheduler().runTaskTimer(Core.getInstance(), SteamwarUser::clear, 72000, 72000);
|
|
||||||
Bukkit.getScheduler().runTaskTimer(Core.getInstance(), SchematicNode::clear, 20L * 30, 20L * 30);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
getLogger().log(Level.INFO, "Running on: " + new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec("hostname").getInputStream())).readLine());
|
getLogger().log(Level.INFO, "Running on: " + new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec("hostname").getInputStream())).readLine());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@@ -130,6 +127,21 @@ public class Core extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@LinkedTimer(delay = 1, period = 1, unit = LinkedTimer.Unit.SECONDS)
|
||||||
|
private void invalidateTabCompletions() {
|
||||||
|
TabCompletionCache.invalidateOldEntries();
|
||||||
|
}
|
||||||
|
|
||||||
|
@LinkedTimer(delay = 1, period = 1, unit = LinkedTimer.Unit.HOURS)
|
||||||
|
private void clearUserCache() {
|
||||||
|
SteamwarUser.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@LinkedTimer(delay = 30, period = 30, unit = LinkedTimer.Unit.SECONDS)
|
||||||
|
private void clearSchematicCache() {
|
||||||
|
SchematicNode.clear();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
TinyProtocol.instance.close();
|
TinyProtocol.instance.close();
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import com.sk89q.worldedit.regions.RegionSelector;
|
|||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import de.steamwar.core.Core;
|
import de.steamwar.core.Core;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import de.steamwar.linkage.PluginCheck;
|
import de.steamwar.linkage.PluginCheck;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@@ -55,12 +56,13 @@ public class WorldEditRenderer implements Listener {
|
|||||||
public WorldEditRenderer() {
|
public WorldEditRenderer() {
|
||||||
INSTANCE = this;
|
INSTANCE = this;
|
||||||
we = WorldEditWrapper.getWorldEditPlugin();
|
we = WorldEditWrapper.getWorldEditPlugin();
|
||||||
|
}
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskTimer(Core.getInstance(), () -> {
|
@LinkedTimer(delay = 20, period = 20)
|
||||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
private void renderPlayers() {
|
||||||
renderPlayer(player, true);
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
}
|
renderPlayer(player, true);
|
||||||
}, 20, 20);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void renderPlayer(Player player) {
|
public static void renderPlayer(Player player) {
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
package de.steamwar.cursor;
|
package de.steamwar.cursor;
|
||||||
|
|
||||||
import com.comphenix.tinyprotocol.TinyProtocol;
|
import com.comphenix.tinyprotocol.TinyProtocol;
|
||||||
import de.steamwar.core.Core;
|
|
||||||
import de.steamwar.core.SWPlayer;
|
import de.steamwar.core.SWPlayer;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.minecraft.network.protocol.Packet;
|
import net.minecraft.network.protocol.Packet;
|
||||||
import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket;
|
import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
@@ -29,12 +28,13 @@ public class CursorListener implements Listener {
|
|||||||
TinyProtocol.instance.addFilter(ServerboundMovePlayerPacket.Pos.class, this::updateCursorFromPacket);
|
TinyProtocol.instance.addFilter(ServerboundMovePlayerPacket.Pos.class, this::updateCursorFromPacket);
|
||||||
TinyProtocol.instance.addFilter(ServerboundMovePlayerPacket.Rot.class, this::updateCursorFromPacket);
|
TinyProtocol.instance.addFilter(ServerboundMovePlayerPacket.Rot.class, this::updateCursorFromPacket);
|
||||||
TinyProtocol.instance.addFilter(ServerboundMovePlayerPacket.PosRot.class, this::updateCursorFromPacket);
|
TinyProtocol.instance.addFilter(ServerboundMovePlayerPacket.PosRot.class, this::updateCursorFromPacket);
|
||||||
|
}
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskTimer(Core.getInstance(), () -> {
|
@LinkedTimer(delay = 1, period = 1)
|
||||||
SWPlayer.allWithSingleComponent(Cursor.class)
|
private void renderCursors() {
|
||||||
.map(SWPlayer.SWPlayerWithComponent::getComponent)
|
SWPlayer.allWithSingleComponent(Cursor.class)
|
||||||
.forEach(Cursor::renderDeduplicated);
|
.map(SWPlayer.SWPlayerWithComponent::getComponent)
|
||||||
}, 1, 1);
|
.forEach(Cursor::renderDeduplicated);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Packet<?> updateCursorFromPacket(Player player, Packet<?> packet) {
|
public Packet<?> updateCursorFromPacket(Player player, Packet<?> packet) {
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
package de.steamwar.teamserver.listener;
|
package de.steamwar.teamserver.listener;
|
||||||
|
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import de.steamwar.teamserver.Builder;
|
import de.steamwar.teamserver.Builder;
|
||||||
import net.md_5.bungee.api.ChatMessageType;
|
import net.md_5.bungee.api.ChatMessageType;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@@ -41,13 +42,12 @@ public class FreezeListener implements Listener {
|
|||||||
|
|
||||||
public static boolean freeze = true;
|
public static boolean freeze = true;
|
||||||
|
|
||||||
public FreezeListener() {
|
@LinkedTimer(delay = 1, period = 1)
|
||||||
Bukkit.getScheduler().runTaskTimer(Builder.getInstance(), () -> {
|
private void showFreeze() {
|
||||||
if (!freeze) return;
|
if (!freeze) return;
|
||||||
Bukkit.getOnlinePlayers().forEach(player -> {
|
Bukkit.getOnlinePlayers().forEach(player -> {
|
||||||
Builder.MESSAGE.sendPrefixless("REGION_FREEZE_ENABLED", player, ChatMessageType.ACTION_BAR);
|
Builder.MESSAGE.sendPrefixless("REGION_FREEZE_ENABLED", player, ChatMessageType.ACTION_BAR);
|
||||||
});
|
});
|
||||||
}, 1, 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|||||||
@@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
package de.steamwar.towerrun;
|
package de.steamwar.towerrun;
|
||||||
|
|
||||||
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import de.steamwar.network.NetworkSender;
|
import de.steamwar.network.NetworkSender;
|
||||||
import de.steamwar.network.packets.common.FightInfoPacket;
|
import de.steamwar.network.packets.common.FightInfoPacket;
|
||||||
import de.steamwar.sql.SteamwarUser;
|
import de.steamwar.sql.SteamwarUser;
|
||||||
@@ -33,6 +35,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Linked
|
||||||
public class FightInfoPacketSender implements Runnable {
|
public class FightInfoPacketSender implements Runnable {
|
||||||
|
|
||||||
private final World world = Bukkit.getWorlds().get(0);
|
private final World world = Bukkit.getWorlds().get(0);
|
||||||
@@ -44,6 +47,7 @@ public class FightInfoPacketSender implements Runnable {
|
|||||||
private final String redName = "§cAlive";
|
private final String redName = "§cAlive";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@LinkedTimer(delay = 1, period = 1, unit = LinkedTimer.Unit.SECONDS)
|
||||||
public void run() {
|
public void run() {
|
||||||
if (Config.test()) {
|
if (Config.test()) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -71,7 +71,5 @@ public class TowerRun extends JavaPlugin {
|
|||||||
Bukkit.shutdown();
|
Bukkit.shutdown();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskTimer(this, new FightInfoPacketSender(), 20, 20);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
package de.steamwar.velocitycore;
|
package de.steamwar.velocitycore;
|
||||||
|
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import de.steamwar.messages.Chatter;
|
import de.steamwar.messages.Chatter;
|
||||||
import de.steamwar.messages.Message;
|
import de.steamwar.messages.Message;
|
||||||
import de.steamwar.persistent.Subserver;
|
import de.steamwar.persistent.Subserver;
|
||||||
@@ -35,7 +36,6 @@ import java.util.HashSet;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import static de.steamwar.persistent.Storage.eventServer;
|
import static de.steamwar.persistent.Storage.eventServer;
|
||||||
|
|
||||||
@@ -58,13 +58,13 @@ public class EventStarter {
|
|||||||
|
|
||||||
public EventStarter() {
|
public EventStarter() {
|
||||||
EventFight.loadAllComingFights();
|
EventFight.loadAllComingFights();
|
||||||
VelocityCore.schedule(this::run).repeat(10, TimeUnit.SECONDS).schedule();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Map<Integer, Subserver> getEventServer() {
|
public static Map<Integer, Subserver> getEventServer() {
|
||||||
return eventServer;
|
return eventServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@LinkedTimer(delay = 0, period = 10, unit = LinkedTimer.Unit.SECONDS)
|
||||||
private void run() {
|
private void run() {
|
||||||
if (eventServer.entrySet().removeIf(entry -> Subserver.getSubserver(entry.getValue().getServer()) == null)) {
|
if (eventServer.entrySet().removeIf(entry -> Subserver.getSubserver(entry.getValue().getServer()) == null)) {
|
||||||
EventFight.loadAllComingFights();
|
EventFight.loadAllComingFights();
|
||||||
|
|||||||
@@ -133,7 +133,6 @@ public class VelocityCore implements ReloadablePlugin {
|
|||||||
return tabCompleter.apply(sender, s);
|
return tabCompleter.apply(sender, s);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
schedule(TabCompletionCache::invalidateOldEntries).repeat(1, TimeUnit.SECONDS).schedule();
|
|
||||||
|
|
||||||
initStaticServers();
|
initStaticServers();
|
||||||
|
|
||||||
@@ -188,12 +187,6 @@ public class VelocityCore implements ReloadablePlugin {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
schedule(() -> {
|
|
||||||
SteamwarUser.clear();
|
|
||||||
Team.clear();
|
|
||||||
SteamwarPrefix.clearCache();
|
|
||||||
}).repeat(1, TimeUnit.HOURS).schedule();
|
|
||||||
|
|
||||||
DiscordConfig discordConfig = DiscordConfig.load();
|
DiscordConfig discordConfig = DiscordConfig.load();
|
||||||
if (discordConfig != null) {
|
if (discordConfig != null) {
|
||||||
try {
|
try {
|
||||||
@@ -204,6 +197,18 @@ public class VelocityCore implements ReloadablePlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@LinkedTimer(delay = 0, period = 1, unit = LinkedTimer.Unit.SECONDS)
|
||||||
|
private void invalidateTabCompletions() {
|
||||||
|
TabCompletionCache.invalidateOldEntries();
|
||||||
|
}
|
||||||
|
|
||||||
|
@LinkedTimer(delay = 0, period = 1, unit = LinkedTimer.Unit.HOURS)
|
||||||
|
private void clearCaches() {
|
||||||
|
SteamwarUser.clear();
|
||||||
|
Team.clear();
|
||||||
|
SteamwarPrefix.clearCache();
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@Override
|
@Override
|
||||||
public void onProxyShutdown(ProxyShutdownEvent event) {
|
public void onProxyShutdown(ProxyShutdownEvent event) {
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import com.velocitypowered.api.proxy.Player;
|
|||||||
import com.velocitypowered.api.proxy.ServerConnection;
|
import com.velocitypowered.api.proxy.ServerConnection;
|
||||||
import de.steamwar.command.SWCommand;
|
import de.steamwar.command.SWCommand;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import de.steamwar.messages.Chatter;
|
import de.steamwar.messages.Chatter;
|
||||||
import de.steamwar.messages.Message;
|
import de.steamwar.messages.Message;
|
||||||
import de.steamwar.messages.PlayerChatter;
|
import de.steamwar.messages.PlayerChatter;
|
||||||
@@ -41,10 +42,8 @@ import net.kyori.adventure.text.format.NamedTextColor;
|
|||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.function.BooleanSupplier;
|
import java.util.function.BooleanSupplier;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
@@ -76,7 +75,11 @@ public class CheckCommand extends SWCommand {
|
|||||||
|
|
||||||
public CheckCommand() {
|
public CheckCommand() {
|
||||||
super("check");
|
super("check");
|
||||||
VelocityCore.schedule(() -> Chatter.allStream().forEach(CheckCommand::sendReminder)).delay(10, TimeUnit.MINUTES).repeat(10, TimeUnit.MINUTES).schedule();
|
}
|
||||||
|
|
||||||
|
@LinkedTimer(delay = 10, period = 10, unit = LinkedTimer.Unit.MINUTES)
|
||||||
|
private static void sendReminders() {
|
||||||
|
Chatter.allStream().forEach(CheckCommand::sendReminder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -29,11 +29,11 @@ import com.velocitypowered.api.event.player.ServerConnectedEvent;
|
|||||||
import com.velocitypowered.api.proxy.Player;
|
import com.velocitypowered.api.proxy.Player;
|
||||||
import com.velocitypowered.proxy.protocol.ProtocolUtils;
|
import com.velocitypowered.proxy.protocol.ProtocolUtils;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import de.steamwar.persistent.Storage;
|
import de.steamwar.persistent.Storage;
|
||||||
import de.steamwar.sql.Mod;
|
import de.steamwar.sql.Mod;
|
||||||
import de.steamwar.sql.SWException;
|
import de.steamwar.sql.SWException;
|
||||||
import de.steamwar.sql.SteamwarUser;
|
import de.steamwar.sql.SteamwarUser;
|
||||||
import de.steamwar.velocitycore.VelocityCore;
|
|
||||||
import de.steamwar.velocitycore.listeners.BasicListener;
|
import de.steamwar.velocitycore.listeners.BasicListener;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import io.netty.buffer.Unpooled;
|
import io.netty.buffer.Unpooled;
|
||||||
@@ -55,20 +55,21 @@ public class FabricModSender extends BasicListener {
|
|||||||
|
|
||||||
neededFabricMods.add("fabricloader");
|
neededFabricMods.add("fabricloader");
|
||||||
neededQuiltMods.add("quilt_loader");
|
neededQuiltMods.add("quilt_loader");
|
||||||
|
}
|
||||||
|
|
||||||
VelocityCore.schedule(() -> {
|
@LinkedTimer(delay = 0, period = 1, unit = LinkedTimer.Unit.SECONDS)
|
||||||
synchronized (Storage.fabricExpectPluginMessage) {
|
private void removeExpiredExpectations() {
|
||||||
for (Map.Entry<Player, Long> entry : Storage.fabricExpectPluginMessage.entrySet()) {
|
synchronized (Storage.fabricExpectPluginMessage) {
|
||||||
if (!Storage.fabricCheckedPlayers.containsKey(entry.getKey())) {
|
for (Map.Entry<Player, Long> entry : Storage.fabricExpectPluginMessage.entrySet()) {
|
||||||
continue;
|
if (!Storage.fabricCheckedPlayers.containsKey(entry.getKey())) {
|
||||||
}
|
continue;
|
||||||
if (System.currentTimeMillis() - entry.getValue() > TimeUnit.SECONDS.toMillis(20)) {
|
}
|
||||||
Storage.fabricExpectPluginMessage.remove(entry.getKey());
|
if (System.currentTimeMillis() - entry.getValue() > TimeUnit.SECONDS.toMillis(20)) {
|
||||||
return;
|
Storage.fabricExpectPluginMessage.remove(entry.getKey());
|
||||||
}
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).repeat(1, TimeUnit.SECONDS).schedule();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handlePluginMessage(PluginMessageEvent e) {
|
public void handlePluginMessage(PluginMessageEvent e) {
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import com.velocitypowered.api.network.ProtocolVersion;
|
|||||||
import com.velocitypowered.api.proxy.Player;
|
import com.velocitypowered.api.proxy.Player;
|
||||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
|
import de.steamwar.linkage.LinkedTimer;
|
||||||
import de.steamwar.linkage.api.Disable;
|
import de.steamwar.linkage.api.Disable;
|
||||||
import de.steamwar.network.packets.common.FightInfoPacket;
|
import de.steamwar.network.packets.common.FightInfoPacket;
|
||||||
import de.steamwar.persistent.Storage;
|
import de.steamwar.persistent.Storage;
|
||||||
@@ -38,7 +39,6 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
@Linked
|
@Linked
|
||||||
public class TablistManager extends BasicListener implements Disable {
|
public class TablistManager extends BasicListener implements Disable {
|
||||||
@@ -63,7 +63,6 @@ public class TablistManager extends BasicListener implements Disable {
|
|||||||
private int seconds = 0;
|
private int seconds = 0;
|
||||||
|
|
||||||
public TablistManager() {
|
public TablistManager() {
|
||||||
VelocityCore.schedule(this::updateTablist).repeat(1, TimeUnit.SECONDS).schedule();
|
|
||||||
synchronized (tablists) {
|
synchronized (tablists) {
|
||||||
VelocityCore.getProxy().getAllPlayers().forEach(player -> tablists.computeIfAbsent(player, Tablist::new).onServerSwitch());
|
VelocityCore.getProxy().getAllPlayers().forEach(player -> tablists.computeIfAbsent(player, Tablist::new).onServerSwitch());
|
||||||
}
|
}
|
||||||
@@ -102,6 +101,7 @@ public class TablistManager extends BasicListener implements Disable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@LinkedTimer(delay = 0, period = 1, unit = LinkedTimer.Unit.SECONDS)
|
||||||
private void updateTablist() {
|
private void updateTablist() {
|
||||||
List<TablistPart> subservers = new ArrayList<>();
|
List<TablistPart> subservers = new ArrayList<>();
|
||||||
for (RegisteredServer server : new ArrayList<>(VelocityCore.getProxy().getAllServers())) {
|
for (RegisteredServer server : new ArrayList<>(VelocityCore.getProxy().getAllServers())) {
|
||||||
|
|||||||
Reference in New Issue
Block a user