diff --git a/README.md b/README.md index dedd06a11..2e5771483 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ 一个以TIM QQ协议驱动的JAVA(+Kotlin) 全开源 QQ机器人服务端核心
不受由于SMARTQQ关停的影响
项目处于快速开发阶段
-由于是学生, 无法每日更新
+由于是学生, 无法每日更新(24岁 是学生
一切开发旨在学习, 请勿用于非法用途

diff --git a/mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java b/mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java index fc6088492..a69d5b861 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java @@ -9,6 +9,7 @@ import net.mamoe.mirai.network.Protocol; import net.mamoe.mirai.network.Robot; import net.mamoe.mirai.task.MiraiTaskManager; import net.mamoe.mirai.utils.LoggerTextFormat; +import net.mamoe.mirai.utils.MiraiLogger; import net.mamoe.mirai.utils.config.MiraiConfig; import net.mamoe.mirai.utils.config.MiraiMapSection; import org.apache.logging.log4j.Logger; @@ -17,7 +18,6 @@ import java.io.File; import java.io.IOException; import java.util.Scanner; -@Log4j2 public class MiraiServer { @Getter private static MiraiServer instance; @@ -40,11 +40,11 @@ public class MiraiServer { @Getter MiraiTaskManager taskManager; + @Getter + MiraiLogger logger; + MiraiConfig setting; - public static Logger getLogger() { - return log; - } protected MiraiServer(){ instance = this; @@ -60,6 +60,7 @@ public class MiraiServer { this.getEventManager().boardcastEvent(new ServerDisableEvent()); getLogger().info(LoggerTextFormat.SKY_BLUE + "Data have been saved"); } + } @@ -67,6 +68,7 @@ public class MiraiServer { this.parentFolder = new File(System.getProperty("user.dir")); this.unix = !System.getProperties().getProperty("os.name").toUpperCase().contains("WINDOWS"); + this.logger = MiraiLogger.INSTANCE; this.eventManager = MiraiEventManager.getInstance(); this.taskManager = MiraiTaskManager.getInstance(); diff --git a/mirai-core/src/main/java/net/mamoe/mirai/event/MiraiEventManager.java b/mirai-core/src/main/java/net/mamoe/mirai/event/MiraiEventManager.java index ce6a04545..cc7df4418 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/event/MiraiEventManager.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/event/MiraiEventManager.java @@ -25,49 +25,61 @@ public class MiraiEventManager { Lock hooksLock = new ReentrantLock(); private Map, List>> hooks = new HashMap<>(); - public void registerUntil(MiraiEventHook hook, Predicate toRemove){ + public void hookUntil(MiraiEventHook hook, Predicate toRemove){ hooksLock.lock(); hooks.putIfAbsent(hook.getEventClass(),new ArrayList<>()); hooks.get(hook.getEventClass()).add(hook.setValidUntil(toRemove)); hooksLock.unlock(); } - public void registerWhile(MiraiEventHook hook, Predicate toKeep){ + public void hookWhile(MiraiEventHook hook, Predicate toKeep){ hooksLock.lock(); hooks.putIfAbsent(hook.getEventClass(),new ArrayList<>()); hooks.get(hook.getEventClass()).add(hook.setValidWhile(toKeep)); hooksLock.unlock(); } - public void registerOnce(MiraiEventHook hook){ - this.registerUntil(hook,(a) -> true); + public void hookOnce(MiraiEventHook hook){ + this.hookUntil(hook,(a) -> true); } - public void register(MiraiEventHook hook){ - this.registerUntil(hook,(a) -> false); + public void registerHook(MiraiEventHook hook){ + this.hookUntil(hook,(a) -> false); } + + /** + * 不推荐onEvent + * 非线程安全 + * 不能保证下一个 D event发生时handler就位 + * @author NaturalHG Aug27 + */ + + @Deprecated public MiraiEventHook onEvent(Class event){ MiraiEventHook hook = new MiraiEventHook<>(event); - this.register(hook); + this.registerHook(hook); return hook; } + @Deprecated public MiraiEventHook onEventOnce(Class event){ MiraiEventHook hook = new MiraiEventHook<>(event); - this.registerOnce(hook); + this.hookOnce(hook); return hook; } + @Deprecated public MiraiEventHook onEventUntil(Class event, Predicate toRemove){ MiraiEventHook hook = new MiraiEventHook<>(event); - this.registerUntil(hook,toRemove); + this.hookUntil(hook,toRemove); return hook; } + @Deprecated public MiraiEventHook onEventWhile(Class event, Predicate toKeep){ MiraiEventHook hook = new MiraiEventHook<>(event); - this.registerWhile(hook,toKeep); + this.hookWhile(hook,toKeep); return hook; } diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/Robot.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/Robot.kt index 5316183be..5e94799e9 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/Robot.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/Robot.kt @@ -14,6 +14,7 @@ import net.mamoe.mirai.network.packet.Packet import net.mamoe.mirai.network.packet.client.Client0825ResponsePacket import net.mamoe.mirai.network.packet.server.Server0825Packet import net.mamoe.mirai.network.packet.server.ServerPacket +import net.mamoe.mirai.utils.MiraiLogger import java.net.InetSocketAddress /** @@ -22,7 +23,7 @@ import java.net.InetSocketAddress * @author Him188moe @ Mirai Project */ class Robot(val number: Long) { - private lateinit var ctx: ChannelHandlerContext; + private lateinit var ctx: ChannelHandlerContext internal fun onPacketReceived(packet: Packet) { if (packet !is ServerPacket) { @@ -56,7 +57,7 @@ class Robot(val number: Long) { ch.pipeline().addLast(object : SimpleChannelInboundHandler() { override fun channelRead0(ctx: ChannelHandlerContext, bytes: ByteArray) { try { - this@Robot.ctx = ctx; + this@Robot.ctx = ctx /*val remaining = Reader.read(bytes); if (Reader.isPacketAvailable()) { robot.onPacketReceived(Reader.toServerPacket()) @@ -65,7 +66,7 @@ class Robot(val number: Long) { }*/ this@Robot.onPacketReceived(ServerPacket.ofByteArray(bytes)) } catch (e: Exception) { - MiraiServer.getLogger().catching(e) + MiraiLogger.catching(e) } } @@ -74,7 +75,7 @@ class Robot(val number: Long) { } override fun exceptionCaught(ctx: ChannelHandlerContext, cause: Throwable) { - MiraiServer.getLogger().catching(cause) + MiraiLogger.catching(cause) } }) } @@ -102,10 +103,10 @@ class Robot(val number: Long) { */ fun read(bytes: ByteArray): ByteArray? { checkNotNull(this.length) - val needSize = length!! - this.bytes.size;//How many bytes we need + val needSize = length!! - this.bytes.size//How many bytes we need if (needSize == bytes.size || needSize > bytes.size) { this.bytes += bytes - return null; + return null } //We got more than we need diff --git a/mirai-core/src/main/java/net/mamoe/mirai/utils/MiraiLogger.kt b/mirai-core/src/main/java/net/mamoe/mirai/utils/MiraiLogger.kt new file mode 100644 index 000000000..18ad743a6 --- /dev/null +++ b/mirai-core/src/main/java/net/mamoe/mirai/utils/MiraiLogger.kt @@ -0,0 +1,24 @@ +package net.mamoe.mirai.utils + +import java.text.SimpleDateFormat +import java.util.* + +/** + * used to replace old logger + */ +object MiraiLogger{ + fun info(o: Any) { + this.print(o.toString()) + } + + fun catching(e:Throwable){ + this.print(e.message) + this.print(e.localizedMessage) + this.print(e.cause.toString()) + } + + private fun print(value:String?){ + val s = SimpleDateFormat("MM-dd HH:mm:ss").format(Date()) + System.out.println(LoggerTextFormat.BLUE.toString() + "[Mirai] $s : $value") + } +} \ No newline at end of file