64 lines
2.3 KiB
Java
64 lines
2.3 KiB
Java
package vip.fubuki.playersync.sync;
|
|
|
|
import net.minecraft.server.management.PlayerList;
|
|
import net.minecraft.util.text.ChatType;
|
|
import net.minecraft.util.text.ITextComponent;
|
|
import net.minecraftforge.event.entity.player.PlayerEvent;
|
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
|
import net.minecraftforge.fml.common.Mod;
|
|
import vip.fubuki.playersync.util.JDBCsetUp;
|
|
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
import java.util.Objects;
|
|
import java.util.UUID;
|
|
|
|
@Mod.EventBusSubscriber
|
|
public class ChatSync {
|
|
static int tick = 0;
|
|
static long current = System.currentTimeMillis();
|
|
|
|
static PlayerList playerList;
|
|
|
|
public static void register(){
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public static void onPlayerChat(net.minecraftforge.event.ServerChatEvent event) throws SQLException {
|
|
JDBCsetUp.executeUpdate("INSERT INTO chat (player, message, timestamp) VALUES ('" + event.getUsername() + "', '" + event.getMessage() + "', '" + current + "')");
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public static void Tick(net.minecraftforge.event.TickEvent.ServerTickEvent event) throws SQLException {
|
|
tick++;
|
|
if(tick == 20) {
|
|
ReadMessage(playerList);
|
|
}
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public static void onPlayerJoin(PlayerEvent.PlayerLoggedInEvent event){
|
|
playerList= Objects.requireNonNull(event.getPlayer().getServer()).getPlayerList();
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public static void onPlayerLeave(PlayerEvent.PlayerLoggedOutEvent event){
|
|
playerList= Objects.requireNonNull(event.getPlayer().getServer()).getPlayerList();
|
|
}
|
|
|
|
public static void ReadMessage(PlayerList playerList) throws SQLException {
|
|
JDBCsetUp.QueryResult queryResult=JDBCsetUp.executeQuery("SELECT * FROM chat WHERE timestamp > " + current);
|
|
ResultSet resultSet= queryResult.getResultSet();
|
|
current = System.currentTimeMillis();
|
|
tick = 0;
|
|
while(resultSet.next()) {
|
|
String player = resultSet.getString("player");
|
|
String message = resultSet.getString("message");
|
|
ITextComponent textComponents = ITextComponent.nullToEmpty(player+": "+message);
|
|
playerList.broadcastMessage(textComponents, ChatType.CHAT, UUID.nameUUIDFromBytes(player.getBytes()));
|
|
}
|
|
resultSet.close();
|
|
queryResult.getConnection().close();
|
|
}
|
|
}
|