mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-03-14 07:39:21 +01:00
parent
6a8f93be89
commit
b5c29a1c0d
@ -33,7 +33,7 @@ import javax.inject.Singleton;
|
||||
SpongeServerPropertiesModule.class,
|
||||
PluginBridgeModule.Sponge.class
|
||||
})
|
||||
interface PlanSpongeComponent {
|
||||
public interface PlanSpongeComponent {
|
||||
|
||||
PlanCommand planCommand();
|
||||
|
||||
|
@ -33,7 +33,7 @@ import javax.inject.Singleton;
|
||||
VelocityServerPropertiesModule.class,
|
||||
PluginBridgeModule.Velocity.class
|
||||
})
|
||||
interface PlanVelocityComponent {
|
||||
public interface PlanVelocityComponent {
|
||||
|
||||
PlanVelocityCommand planCommand();
|
||||
|
||||
|
@ -7,7 +7,11 @@ package com.djrapitops.plan.system.tasks;
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||
import com.djrapitops.plan.system.tasks.server.*;
|
||||
import com.djrapitops.plan.system.tasks.server.BootAnalysisTask;
|
||||
import com.djrapitops.plan.system.tasks.server.PeriodicAnalysisTask;
|
||||
import com.djrapitops.plan.system.tasks.server.bukkit.BukkitTPSCountTimer;
|
||||
import com.djrapitops.plan.system.tasks.server.bukkit.PaperTPSCountTimer;
|
||||
import com.djrapitops.plan.system.tasks.server.bukkit.PingCountTimerBukkit;
|
||||
import com.djrapitops.plugin.api.Check;
|
||||
import com.djrapitops.plugin.api.TimeAmount;
|
||||
import com.djrapitops.plugin.task.RunnableFactory;
|
||||
|
@ -7,9 +7,9 @@ package com.djrapitops.plan.system.tasks;
|
||||
import com.djrapitops.plan.PlanBungee;
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||
import com.djrapitops.plan.system.tasks.bungee.BungeeTPSCountTimer;
|
||||
import com.djrapitops.plan.system.tasks.server.NetworkPageRefreshTask;
|
||||
import com.djrapitops.plan.system.tasks.server.PingCountTimerBungee;
|
||||
import com.djrapitops.plan.system.tasks.proxy.NetworkPageRefreshTask;
|
||||
import com.djrapitops.plan.system.tasks.proxy.bungee.BungeeTPSCountTimer;
|
||||
import com.djrapitops.plan.system.tasks.proxy.bungee.PingCountTimerBungee;
|
||||
import com.djrapitops.plugin.api.TimeAmount;
|
||||
import com.djrapitops.plugin.task.AbsRunnable;
|
||||
import com.djrapitops.plugin.task.RunnableFactory;
|
||||
|
@ -5,8 +5,8 @@ import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||
import com.djrapitops.plan.system.tasks.server.BootAnalysisTask;
|
||||
import com.djrapitops.plan.system.tasks.server.PeriodicAnalysisTask;
|
||||
import com.djrapitops.plan.system.tasks.server.PingCountTimerSponge;
|
||||
import com.djrapitops.plan.system.tasks.server.SpongeTPSCountTimer;
|
||||
import com.djrapitops.plan.system.tasks.server.sponge.PingCountTimerSponge;
|
||||
import com.djrapitops.plan.system.tasks.server.sponge.SpongeTPSCountTimer;
|
||||
import com.djrapitops.plugin.api.TimeAmount;
|
||||
import com.djrapitops.plugin.task.RunnableFactory;
|
||||
import org.spongepowered.api.Sponge;
|
||||
|
@ -7,10 +7,10 @@ package com.djrapitops.plan.system.tasks;
|
||||
import com.djrapitops.plan.PlanVelocity;
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||
import com.djrapitops.plan.system.tasks.server.NetworkPageRefreshTask;
|
||||
import com.djrapitops.plan.system.tasks.server.PingCountTimerBungee;
|
||||
import com.djrapitops.plan.system.tasks.server.PingCountTimerVelocity;
|
||||
import com.djrapitops.plan.system.tasks.velocity.VelocityTPSCountTimer;
|
||||
import com.djrapitops.plan.system.tasks.proxy.NetworkPageRefreshTask;
|
||||
import com.djrapitops.plan.system.tasks.proxy.bungee.PingCountTimerBungee;
|
||||
import com.djrapitops.plan.system.tasks.proxy.velocity.PingCountTimerVelocity;
|
||||
import com.djrapitops.plan.system.tasks.proxy.velocity.VelocityTPSCountTimer;
|
||||
import com.djrapitops.plugin.api.TimeAmount;
|
||||
import com.djrapitops.plugin.task.AbsRunnable;
|
||||
import com.djrapitops.plugin.task.RunnableFactory;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.djrapitops.plan.system.tasks.server;
|
||||
package com.djrapitops.plan.system.tasks.proxy;
|
||||
|
||||
import com.djrapitops.plan.system.info.server.ServerInfo;
|
||||
import com.djrapitops.plan.system.webserver.cache.PageId;
|
@ -1,4 +1,4 @@
|
||||
package com.djrapitops.plan.system.tasks.bungee;
|
||||
package com.djrapitops.plan.system.tasks.proxy.bungee;
|
||||
|
||||
import com.djrapitops.plan.data.container.TPS;
|
||||
import com.djrapitops.plan.data.container.builders.TPSBuilder;
|
@ -21,7 +21,7 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
package com.djrapitops.plan.system.tasks.server;
|
||||
package com.djrapitops.plan.system.tasks.proxy.bungee;
|
||||
|
||||
import com.djrapitops.plan.data.store.objects.DateObj;
|
||||
import com.djrapitops.plan.system.processing.Processing;
|
||||
@ -78,15 +78,19 @@ public class PingCountTimerBungee extends AbsRunnable implements Listener {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
List<UUID> loggedOut = new ArrayList<>();
|
||||
long time = System.currentTimeMillis();
|
||||
playerHistory.forEach((uuid, history) -> {
|
||||
Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next();
|
||||
UUID uuid = entry.getKey();
|
||||
List<DateObj<Integer>> history = entry.getValue();
|
||||
ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid);
|
||||
if (player != null) {
|
||||
int ping = getPing(player);
|
||||
if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) {
|
||||
// Don't accept bad values
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
history.add(new DateObj<>(time, ping));
|
||||
if (history.size() >= 30) {
|
||||
@ -94,10 +98,9 @@ public class PingCountTimerBungee extends AbsRunnable implements Listener {
|
||||
history.clear();
|
||||
}
|
||||
} else {
|
||||
loggedOut.add(uuid);
|
||||
iterator.remove();
|
||||
}
|
||||
});
|
||||
loggedOut.forEach(playerHistory::remove);
|
||||
}
|
||||
}
|
||||
|
||||
public void addPlayer(ProxiedPlayer player) {
|
@ -21,7 +21,7 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
package com.djrapitops.plan.system.tasks.server;
|
||||
package com.djrapitops.plan.system.tasks.proxy.velocity;
|
||||
|
||||
import com.djrapitops.plan.PlanVelocity;
|
||||
import com.djrapitops.plan.data.store.objects.DateObj;
|
||||
@ -56,7 +56,7 @@ public class PingCountTimerVelocity extends AbsRunnable {
|
||||
//https://github.com/bergerkiller/CraftSource/blob/master/net.minecraft.server/PlayerConnection.java#L178
|
||||
public static final int PING_INTERVAL = 2 * 20;
|
||||
|
||||
private final Map<UUID, List<DateObj<Integer>>> playerHistory;
|
||||
final Map<UUID, List<DateObj<Integer>>> playerHistory;
|
||||
|
||||
private final PlanVelocity plugin;
|
||||
private final PlanConfig config;
|
||||
@ -82,15 +82,19 @@ public class PingCountTimerVelocity extends AbsRunnable {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
List<UUID> loggedOut = new ArrayList<>();
|
||||
long time = System.currentTimeMillis();
|
||||
playerHistory.forEach((uuid, history) -> {
|
||||
Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next();
|
||||
UUID uuid = entry.getKey();
|
||||
List<DateObj<Integer>> history = entry.getValue();
|
||||
Player player = plugin.getProxy().getPlayer(uuid).orElse(null);
|
||||
if (player != null) {
|
||||
int ping = getPing(player);
|
||||
if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) {
|
||||
// Don't accept bad values
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
history.add(new DateObj<>(time, ping));
|
||||
if (history.size() >= 30) {
|
||||
@ -98,13 +102,12 @@ public class PingCountTimerVelocity extends AbsRunnable {
|
||||
history.clear();
|
||||
}
|
||||
} else {
|
||||
loggedOut.add(uuid);
|
||||
iterator.remove();
|
||||
}
|
||||
});
|
||||
loggedOut.forEach(playerHistory::remove);
|
||||
}
|
||||
}
|
||||
|
||||
public void addPlayer(Player player) {
|
||||
void addPlayer(Player player) {
|
||||
playerHistory.put(player.getUniqueId(), new ArrayList<>());
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.djrapitops.plan.system.tasks.velocity;
|
||||
package com.djrapitops.plan.system.tasks.proxy.velocity;
|
||||
|
||||
import com.djrapitops.plan.data.container.TPS;
|
||||
import com.djrapitops.plan.data.container.builders.TPSBuilder;
|
@ -1,4 +1,4 @@
|
||||
package com.djrapitops.plan.system.tasks.server;
|
||||
package com.djrapitops.plan.system.tasks.server.bukkit;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.data.container.TPS;
|
@ -1,4 +1,4 @@
|
||||
package com.djrapitops.plan.system.tasks.server;
|
||||
package com.djrapitops.plan.system.tasks.server.bukkit;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.data.container.TPS;
|
@ -21,7 +21,7 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
package com.djrapitops.plan.system.tasks.server;
|
||||
package com.djrapitops.plan.system.tasks.server.bukkit;
|
||||
|
||||
import com.djrapitops.plan.data.store.objects.DateObj;
|
||||
import com.djrapitops.plan.system.processing.Processing;
|
||||
@ -131,15 +131,19 @@ public class PingCountTimerBukkit extends AbsRunnable implements Listener {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
List<UUID> loggedOut = new ArrayList<>();
|
||||
long time = System.currentTimeMillis();
|
||||
playerHistory.forEach((uuid, history) -> {
|
||||
Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next();
|
||||
UUID uuid = entry.getKey();
|
||||
List<DateObj<Integer>> history = entry.getValue();
|
||||
Player player = Bukkit.getPlayer(uuid);
|
||||
if (player != null) {
|
||||
int ping = getPing(player);
|
||||
if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) {
|
||||
// Don't accept bad values
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
history.add(new DateObj<>(time, ping));
|
||||
if (history.size() >= 30) {
|
||||
@ -147,10 +151,9 @@ public class PingCountTimerBukkit extends AbsRunnable implements Listener {
|
||||
history.clear();
|
||||
}
|
||||
} else {
|
||||
loggedOut.add(uuid);
|
||||
iterator.remove();
|
||||
}
|
||||
});
|
||||
loggedOut.forEach(playerHistory::remove);
|
||||
}
|
||||
}
|
||||
|
||||
public void addPlayer(Player player) {
|
@ -21,7 +21,7 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
package com.djrapitops.plan.system.tasks.server;
|
||||
package com.djrapitops.plan.system.tasks.server.sponge;
|
||||
|
||||
import com.djrapitops.plan.data.store.objects.DateObj;
|
||||
import com.djrapitops.plan.system.processing.Processing;
|
||||
@ -74,15 +74,19 @@ public class PingCountTimerSponge extends AbsRunnable {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
List<UUID> loggedOut = new ArrayList<>();
|
||||
long time = System.currentTimeMillis();
|
||||
playerHistory.forEach((uuid, history) -> {
|
||||
Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next();
|
||||
UUID uuid = entry.getKey();
|
||||
List<DateObj<Integer>> history = entry.getValue();
|
||||
Optional<Player> player = Sponge.getServer().getPlayer(uuid);
|
||||
if (player.isPresent()) {
|
||||
int ping = getPing(player.get());
|
||||
if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) {
|
||||
// Don't accept bad values
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
history.add(new DateObj<>(time, ping));
|
||||
if (history.size() >= 30) {
|
||||
@ -90,10 +94,9 @@ public class PingCountTimerSponge extends AbsRunnable {
|
||||
history.clear();
|
||||
}
|
||||
} else {
|
||||
loggedOut.add(uuid);
|
||||
iterator.remove();
|
||||
}
|
||||
});
|
||||
loggedOut.forEach(playerHistory::remove);
|
||||
}
|
||||
}
|
||||
|
||||
public void addPlayer(Player player) {
|
@ -1,4 +1,4 @@
|
||||
package com.djrapitops.plan.system.tasks.server;
|
||||
package com.djrapitops.plan.system.tasks.server.sponge;
|
||||
|
||||
import com.djrapitops.plan.PlanSponge;
|
||||
import com.djrapitops.plan.data.container.TPS;
|
@ -0,0 +1,54 @@
|
||||
package com.djrapitops.plan.system.tasks.proxy.velocity;
|
||||
|
||||
import com.djrapitops.plan.PlanVelocity;
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
import utilities.TestConstants;
|
||||
import utilities.mocks.PlanVelocityMocker;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
/**
|
||||
* Tests for {@link PingCountTimerVelocity}.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class PingCountTimerVelocityTest {
|
||||
|
||||
private PlanVelocity plugin;
|
||||
private Player player;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
PlanVelocityMocker mocker = PlanVelocityMocker.setUp()
|
||||
.withProxy();
|
||||
plugin = mocker.getPlanMock();
|
||||
|
||||
player = Mockito.mock(Player.class);
|
||||
when(player.getPing()).thenReturn(5L);
|
||||
when(player.getUniqueId()).thenReturn(TestConstants.PLAYER_ONE_UUID);
|
||||
|
||||
ProxyServer proxy = plugin.getProxy();
|
||||
when(proxy.getPlayer(TestConstants.PLAYER_ONE_UUID)).thenReturn(Optional.empty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void offlinePlayerIsRemovedFromPlayerHistory() {
|
||||
PingCountTimerVelocity counter = new PingCountTimerVelocity(plugin, null, null, null, null);
|
||||
|
||||
assertTrue(counter.playerHistory.isEmpty());
|
||||
counter.addPlayer(player);
|
||||
assertFalse(counter.playerHistory.isEmpty());
|
||||
|
||||
counter.run();
|
||||
assertTrue(counter.playerHistory.isEmpty());
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user