2024-07-11 13:43:54 -05:00
|
|
|
package one.oth3r.sit.utl;
|
|
|
|
|
|
|
|
import net.minecraft.entity.Entity;
|
|
|
|
import net.minecraft.entity.decoration.DisplayEntity;
|
|
|
|
import net.minecraft.server.network.ServerPlayerEntity;
|
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
|
|
|
public class LoopManager {
|
|
|
|
|
|
|
|
private static int time = 0;
|
|
|
|
|
|
|
|
public static void tick() {
|
|
|
|
time++;
|
|
|
|
if (time >= 5) {
|
|
|
|
time = 0;
|
|
|
|
|
|
|
|
// check all sit entities to make sure their still valid
|
2024-11-15 11:19:39 -06:00
|
|
|
HashMap<ServerPlayerEntity, DisplayEntity.TextDisplayEntity> entities = Data.getSitEntities();
|
2024-07-11 13:43:54 -05:00
|
|
|
for (ServerPlayerEntity player : entities.keySet()) {
|
|
|
|
DisplayEntity.TextDisplayEntity entity = entities.get(player);
|
|
|
|
|
|
|
|
if (player.getVehicle() == null || !player.getVehicle().equals(entity)) {
|
|
|
|
Logic.removeEntity(player);
|
|
|
|
} else {
|
|
|
|
Logic.checkSittingValidity(player);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// get the player's sit entity when they join
|
2024-08-17 13:27:26 -05:00
|
|
|
HashMap<ServerPlayerEntity, Integer> checkPlayers = Data.getCheckPlayers();
|
2024-07-11 13:43:54 -05:00
|
|
|
for (ServerPlayerEntity player : checkPlayers.keySet()) {
|
|
|
|
Integer time = checkPlayers.get(player);
|
|
|
|
// tick down or remove the player if at the end
|
|
|
|
time -= 1;
|
2024-08-17 13:27:26 -05:00
|
|
|
if (time <= 0) Data.removeCheckPlayer(player);
|
|
|
|
else Data.setCheckPlayer(player, time);
|
2024-07-11 13:43:54 -05:00
|
|
|
|
|
|
|
if (player.getVehicle() != null) {
|
|
|
|
Entity entity = player.getVehicle();
|
2024-07-23 13:49:43 -05:00
|
|
|
if (entity instanceof DisplayEntity.TextDisplayEntity tde && entity.getName().getString().equals(Data.ENTITY_NAME)) {
|
2024-07-11 13:43:54 -05:00
|
|
|
// bind the entity to the player
|
2024-11-15 11:19:39 -06:00
|
|
|
Data.addSitEntity(player, tde);
|
2024-07-11 13:43:54 -05:00
|
|
|
// check if the player is still allowed to sit
|
|
|
|
Logic.checkSittingValidity(player);
|
|
|
|
// remove the player from the check
|
2024-08-17 13:27:26 -05:00
|
|
|
Data.removeCheckPlayer(player);
|
2024-07-11 13:43:54 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2024-08-17 13:27:26 -05:00
|
|
|
|
2024-08-26 14:38:21 -05:00
|
|
|
// spawn entities for everyone in the spawn list
|
2024-08-17 13:27:26 -05:00
|
|
|
HashMap<ServerPlayerEntity, DisplayEntity.TextDisplayEntity> spawnList = Data.getSpawnList();
|
|
|
|
for (ServerPlayerEntity player : spawnList.keySet()) {
|
2024-08-26 14:38:21 -05:00
|
|
|
Logic.spawnEntity(player);
|
2024-08-17 13:27:26 -05:00
|
|
|
}
|
2024-07-11 13:43:54 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|