165 lines
6.4 KiB
Java
165 lines
6.4 KiB
Java
package com.rtxbb.lts_auth;
|
|
|
|
import com.rtxbb.lts_auth.command.LoginCommand;
|
|
import com.rtxbb.lts_auth.command.RegisterCommand;
|
|
import com.rtxbb.lts_auth.config.MessageManager;
|
|
import com.rtxbb.lts_auth.manager.AuthManager;
|
|
import com.mojang.logging.LogUtils;
|
|
import net.minecraft.network.chat.Component;
|
|
import net.minecraft.server.level.ServerPlayer;
|
|
import net.minecraftforge.common.MinecraftForge;
|
|
import net.minecraftforge.event.RegisterCommandsEvent;
|
|
import net.minecraftforge.event.TickEvent;
|
|
import net.minecraftforge.event.entity.item.ItemTossEvent;
|
|
import net.minecraftforge.event.entity.living.LivingAttackEvent;
|
|
import net.minecraftforge.event.entity.living.LivingHurtEvent;
|
|
import net.minecraftforge.event.entity.player.EntityItemPickupEvent;
|
|
import net.minecraftforge.event.entity.player.PlayerEvent;
|
|
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
|
import net.minecraftforge.event.level.BlockEvent;
|
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
|
import net.minecraftforge.fml.common.Mod;
|
|
import net.minecraftforge.fml.loading.FMLPaths;
|
|
import org.slf4j.Logger;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
import java.util.UUID;
|
|
|
|
@Mod("lts_auth")
|
|
public class LtsAuthMod {
|
|
public static final String MODID = "lts_auth";
|
|
private static final Logger LOGGER = LogUtils.getLogger();
|
|
private static final MessageManager MESSAGE_MANAGER = new MessageManager(FMLPaths.CONFIGDIR.get().resolve("lts_auth").resolve("messages.yml"));
|
|
private final Map<UUID, Integer> joinTicks = new HashMap<>();
|
|
|
|
public LtsAuthMod() {
|
|
MESSAGE_MANAGER.load();
|
|
MinecraftForge.EVENT_BUS.register(this);
|
|
LOGGER.info(messages().get("messages.mod_initialized"));
|
|
}
|
|
|
|
public static MessageManager messages() {
|
|
return MESSAGE_MANAGER;
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onRegisterCommands(RegisterCommandsEvent event) {
|
|
RegisterCommand.register(event.getDispatcher());
|
|
LoginCommand.register(event.getDispatcher());
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onPlayerJoin(PlayerEvent.PlayerLoggedInEvent event) {
|
|
if (event.getEntity() instanceof ServerPlayer player) {
|
|
AuthManager.getInstance().logout(player.m_20148_());
|
|
joinTicks.put(player.m_20148_(), 0);
|
|
if (!AuthManager.getInstance().isAuthenticated(player.m_20148_())) {
|
|
player.m_6842_(true);
|
|
}
|
|
if (AuthManager.getInstance().isRegistered(player.m_20148_())) {
|
|
player.m_213846_(Component.m_237113_(messages().getColored("messages.login_prompt")));
|
|
} else {
|
|
player.m_213846_(Component.m_237113_(messages().getColored("messages.register_prompt")));
|
|
}
|
|
}
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onPlayerQuit(PlayerEvent.PlayerLoggedOutEvent event) {
|
|
AuthManager.getInstance().logout(event.getEntity().m_20148_());
|
|
joinTicks.remove(event.getEntity().m_20148_());
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onServerTick(TickEvent.ServerTickEvent event) {
|
|
if (event.phase == TickEvent.Phase.END) {
|
|
Map<UUID, Integer> ticksCopy = new HashMap<>(joinTicks);
|
|
for (UUID uuid : ticksCopy.keySet()) {
|
|
if (!AuthManager.getInstance().isAuthenticated(uuid)) {
|
|
int ticks = joinTicks.get(uuid) + 1;
|
|
joinTicks.put(uuid, ticks);
|
|
ServerPlayer player = event.getServer().m_6846_().m_11259_(uuid);
|
|
if (player != null) {
|
|
if (ticks % 100 == 0) {
|
|
if (AuthManager.getInstance().isRegistered(uuid)) {
|
|
player.m_240418_(Component.m_237113_(messages().getColored("messages.login_reminder")), true);
|
|
} else {
|
|
player.m_240418_(Component.m_237113_(messages().getColored("messages.register_reminder")), true);
|
|
}
|
|
}
|
|
if (ticks >= 36000) {
|
|
player.f_8906_.m_9942_(Component.m_237113_(messages().getColored("messages.timeout_kick")));
|
|
}
|
|
}
|
|
} else {
|
|
joinTicks.remove(uuid);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onPlayerMove(TickEvent.PlayerTickEvent event) {
|
|
if (event.phase == TickEvent.Phase.START && event.player instanceof ServerPlayer player) {
|
|
if (!AuthManager.getInstance().isAuthenticated(player.m_20148_())) {
|
|
player.m_6842_(true);
|
|
player.m_6021_(player.m_20185_(), player.m_20186_(), player.m_20189_());
|
|
}
|
|
}
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onPlayerInteract(PlayerInteractEvent event) {
|
|
if (event.getEntity() instanceof ServerPlayer player) {
|
|
if (!AuthManager.getInstance().isAuthenticated(player.m_20148_())) {
|
|
event.setCanceled(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onLivingHurt(LivingHurtEvent event) {
|
|
if (event.getEntity() instanceof ServerPlayer player) {
|
|
if (!AuthManager.getInstance().isAuthenticated(player.m_20148_())) {
|
|
event.setCanceled(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onLivingAttack(LivingAttackEvent event) {
|
|
if (event.getEntity() instanceof ServerPlayer player) {
|
|
if (!AuthManager.getInstance().isAuthenticated(player.m_20148_())) {
|
|
event.setCanceled(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onBlockBreak(BlockEvent.BreakEvent event) {
|
|
if (event.getPlayer() instanceof ServerPlayer player) {
|
|
if (!AuthManager.getInstance().isAuthenticated(player.m_20148_())) {
|
|
event.setCanceled(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onItemPickup(EntityItemPickupEvent event) {
|
|
if (event.getEntity() instanceof ServerPlayer player) {
|
|
if (!AuthManager.getInstance().isAuthenticated(player.m_20148_())) {
|
|
event.setCanceled(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onItemToss(ItemTossEvent event) {
|
|
if (event.getPlayer() instanceof ServerPlayer player) {
|
|
if (!AuthManager.getInstance().isAuthenticated(player.m_20148_())) {
|
|
event.setCanceled(true);
|
|
}
|
|
}
|
|
}
|
|
}
|