47 lines
1.7 KiB
Java
47 lines
1.7 KiB
Java
package vip.fubuki.playersync.sync;
|
|
|
|
import net.minecraft.network.chat.Component;
|
|
import net.minecraft.server.players.PlayerList;
|
|
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;
|
|
|
|
@Mod.EventBusSubscriber
|
|
public class ChatSync {
|
|
static int tick = 0;
|
|
static long current = System.currentTimeMillis();
|
|
|
|
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.getRawText() + "', '" + current + "')");
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public static void Tick(net.minecraftforge.event.TickEvent.ServerTickEvent event) throws SQLException {
|
|
tick++;
|
|
if(tick == 20) {
|
|
ReadMessage(event.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");
|
|
Component textComponents = Component.literal(player+": "+message);
|
|
playerList.broadcastSystemMessage(textComponents, true);
|
|
}
|
|
resultSet.close();
|
|
queryResult.getConnection().close();
|
|
}
|
|
}
|