Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
Mirai
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
Mirai
Commits
bcf6a2a9
Commit
bcf6a2a9
authored
Feb 15, 2020
by
ryoii
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin'
parents
4aa4a61b
e27c9bd4
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
98 additions
and
36 deletions
+98
-36
mirai-console/src/main/kotlin/net/mamoe/mirai/MiraiConsole.kt
...i-console/src/main/kotlin/net/mamoe/mirai/MiraiConsole.kt
+1
-2
mirai-console/src/main/kotlin/net/mamoe/mirai/MiraiConsoleUI.kt
...console/src/main/kotlin/net/mamoe/mirai/MiraiConsoleUI.kt
+91
-32
mirai-core-qqandroid/src/jvmTest/kotlin/androidPacketTests/serverToClient.kt
...d/src/jvmTest/kotlin/androidPacketTests/serverToClient.kt
+2
-2
mirai-japt/README.md
mirai-japt/README.md
+4
-0
No files found.
mirai-console/src/main/kotlin/net/mamoe/mirai/MiraiConsole.kt
View file @
bcf6a2a9
...
...
@@ -237,7 +237,7 @@ object MiraiConsole {
object
CommandListener
{
fun
start
()
{
thread
{
processNextCommandLine
()
//
processNextCommandLine()
}
}
...
...
@@ -281,7 +281,6 @@ class MiraiConsoleLoader {
companion
object
{
@JvmStatic
fun
main
(
args
:
Array
<
String
>)
{
MiraiConsole
.
start
()
Runtime
.
getRuntime
().
addShutdownHook
(
thread
(
start
=
false
)
{
MiraiConsole
.
stop
()
...
...
mirai-console/src/main/kotlin/net/mamoe/mirai/MiraiConsoleUI.kt
View file @
bcf6a2a9
...
...
@@ -11,11 +11,15 @@ import com.googlecode.lanterna.terminal.Terminal
import
com.googlecode.lanterna.terminal.TerminalResizeListener
import
com.googlecode.lanterna.terminal.swing.SwingTerminal
import
com.googlecode.lanterna.terminal.swing.SwingTerminalFrame
import
net.mamoe.mirai.MiraiConsoleUI.LoggerDrawer.drawLog
import
net.mamoe.mirai.MiraiConsoleUI.LoggerDrawer.redrawLogs
import
net.mamoe.mirai.utils.currentTimeSeconds
import
java.io.OutputStream
import
java.io.PrintStream
import
java.
lang.StringBuilder
import
java.
nio.charset.Charset
import
java.util.*
import
kotlin.concurrent.thread
import
kotlin.math.ceil
object
MiraiConsoleUI
{
...
...
@@ -36,12 +40,17 @@ object MiraiConsoleUI {
lateinit
var
textGraphics
:
TextGraphics
var
hasStart
=
false
private
lateinit
var
internalPrinter
:
PrintStream
fun
start
()
{
if
(
hasStart
)
{
return
}
internalPrinter
=
System
.
out
hasStart
=
true
val
defaultTerminalFactory
=
DefaultTerminalFactory
()
val
defaultTerminalFactory
=
DefaultTerminalFactory
(
internalPrinter
,
System
.
`in`
,
Charset
.
defaultCharset
()
)
try
{
terminal
=
defaultTerminalFactory
.
createTerminal
()
terminal
.
enterPrivateMode
()
...
...
@@ -64,8 +73,27 @@ object MiraiConsoleUI {
inited
=
false
update
()
redrawCommand
()
redrawLogs
(
log
[
screens
[
currentScreenId
]]
!!
)
})
if
(
terminal
!
is
SwingTerminalFrame
)
{
System
.
setOut
(
PrintStream
(
object
:
OutputStream
()
{
var
builder
=
java
.
lang
.
StringBuilder
()
override
fun
write
(
b
:
Int
)
{
with
(
b
.
toChar
())
{
if
(
this
==
'\n'
)
{
pushLog
(
0
,
builder
.
toString
())
builder
=
java
.
lang
.
StringBuilder
()
}
else
{
builder
.
append
(
this
)
}
}
}
}))
}
System
.
setErr
(
System
.
out
)
update
()
val
charList
=
listOf
(
','
,
'.'
,
'/'
,
'@'
,
'#'
,
'$'
,
'%'
,
'^'
,
'&'
,
'*'
,
'('
,
')'
,
'_'
,
'='
,
'+'
,
'!'
,
' '
)
...
...
@@ -197,52 +225,83 @@ object MiraiConsoleUI {
textGraphics
.
putString
(
width
-
2
-
"Add admins via commands|"
.
length
,
4
,
"Add admins via commands|"
)
}
fun
drawLogs
(
values
:
List
<
String
>)
{
val
width
=
terminal
.
terminalSize
.
columns
-
6
val
heightMin
=
5
var
currentHeight
=
terminal
.
terminalSize
.
rows
-
5
for
(
index
in
heightMin
until
currentHeight
)
{
clearRows
(
index
)
}
object
LoggerDrawer
{
var
currentHeight
=
6
values
.
forEach
{
if
(
currentHeight
>
heightMin
)
{
var
x
=
it
while
(
currentHeight
>
heightMin
)
{
if
(
x
.
isEmpty
()
||
x
.
isBlank
())
break
textGraphics
.
foregroundColor
=
TextColor
.
ANSI
.
GREEN
textGraphics
.
backgroundColor
=
TextColor
.
ANSI
.
DEFAULT
val
towrite
=
if
(
x
.
length
>
width
)
{
x
.
substring
(
0
,
width
).
also
{
x
=
x
.
substring
(
width
)
}
}
else
{
x
.
also
{
x
=
""
}
fun
drawLog
(
string
:
String
,
flush
:
Boolean
=
true
)
{
val
maxHeight
=
terminal
.
terminalSize
.
rows
-
6
val
heightNeed
=
(
string
.
length
/
(
terminal
.
terminalSize
.
columns
-
6
))
+
1
if
(
currentHeight
+
heightNeed
>
maxHeight
)
{
cleanPage
()
}
textGraphics
.
foregroundColor
=
TextColor
.
ANSI
.
GREEN
textGraphics
.
backgroundColor
=
TextColor
.
ANSI
.
DEFAULT
val
width
=
terminal
.
terminalSize
.
columns
-
6
var
x
=
string
while
(
true
)
{
if
(
x
==
""
)
break
val
toWrite
=
if
(
x
.
length
>
width
)
{
x
.
substring
(
0
,
width
).
also
{
x
=
x
.
substring
(
width
)
}
}
else
{
x
.
also
{
x
=
""
}
textGraphics
.
putString
(
3
,
currentHeight
,
towrite
,
SGR
.
ITALIC
)
--
currentHeight
}
try
{
textGraphics
.
putString
(
3
,
currentHeight
,
toWrite
,
SGR
.
ITALIC
)
}
catch
(
ignored
:
Exception
)
{
//
}
++
currentHeight
}
if
(
flush
&&
terminal
is
SwingTerminalFrame
)
{
terminal
.
flush
()
}
}
fun
cleanPage
()
{
for
(
index
in
6
until
terminal
.
terminalSize
.
rows
-
6
)
{
clearRows
(
index
)
}
currentHeight
=
6
}
textGraphics
.
putString
(
3
,
9
,
"AAAAAAAAAAAAAAAAAAAAAAa"
,
SGR
.
ITALIC
)
terminal
.
flush
()
fun
redrawLogs
(
toDraw
:
List
<
String
>)
{
this
.
cleanPage
()
var
logsToDraw
=
0
var
vara
=
0
toDraw
.
reversed
().
forEach
{
val
heightNeed
=
(
it
.
length
/
(
terminal
.
terminalSize
.
columns
-
6
))
+
1
vara
+=
heightNeed
if
(
currentHeight
+
vara
<
terminal
.
terminalSize
.
rows
-
6
)
{
logsToDraw
++
}
else
{
return
}
}
for
(
index
in
(
toDraw
.
size
-
logsToDraw
)
until
toDraw
.
size
-
1
)
{
drawLog
(
toDraw
[
index
],
false
)
}
if
(
terminal
is
SwingTerminalFrame
)
{
terminal
.
flush
()
}
}
}
fun
pushLog
(
uin
:
Long
,
str
:
String
)
{
log
[
uin
]
!!
.
push
(
str
)
if
(
uin
==
screens
[
currentScreenId
])
{
drawLog
s
(
log
[
screens
[
currentScreenId
]]
!!
)
drawLog
(
str
)
}
}
var
commandBuilder
=
StringBuilder
()
fun
redrawCommand
()
{
val
height
=
terminal
.
terminalSize
.
rows
val
width
=
terminal
.
terminalSize
.
columns
...
...
@@ -303,7 +362,7 @@ object MiraiConsoleUI {
drawBotFrame
(
screens
[
currentScreenId
],
0
)
}
}
terminal
.
flush
(
)
redrawLogs
(
log
[
screens
[
currentScreenId
]]
!!
)
}
}
...
...
mirai-core-qqandroid/src/jvmTest/kotlin/androidPacketTests/serverToClient.kt
View file @
bcf6a2a9
...
...
@@ -215,7 +215,7 @@ fun ByteReadPacket.readIoBuffer(
* 解析 SSO 层包装
*/
@UseExperimental
(
ExperimentalUnsignedTypes
::
class
)
private
fun
parseSsoFrame
(
flag3
:
Int
,
input
:
ByteReadPacket
):
KnownPacketFactories
.
IncomingPacket
{
private
fun
parseSsoFrame
(
flag3
:
Int
,
input
:
ByteReadPacket
):
KnownPacketFactories
.
IncomingPacket
<
*
>
{
val
commandName
:
String
val
ssoSequenceId
:
Int
...
...
@@ -257,7 +257,7 @@ private fun parseSsoFrame(flag3: Int, input: ByteReadPacket): KnownPacketFactori
* 解析 Uni 层包装
*/
@UseExperimental
(
ExperimentalUnsignedTypes
::
class
)
private
fun
parseUniFrame
(
input
:
ByteReadPacket
):
KnownPacketFactories
.
IncomingPacket
{
private
fun
parseUniFrame
(
input
:
ByteReadPacket
):
KnownPacketFactories
.
IncomingPacket
<
*
>
{
// 00 00 00 30 00 01 2F 7C 00 00 00 00 00 00 00 04 00 00 00 14 67 78 68 72 65 70 6F 72 74 2E 72 65 70 6F 72 74 00 00 00 08 66 82 D3 0B 00 00 00 00
// 00 00 00 06 08 00
...
...
mirai-japt/README.md
View file @
bcf6a2a9
...
...
@@ -5,6 +5,10 @@ Mirai Java Apt
提供阻塞API 来让 Java 调用 Mirai 的 API 更容易
## Requirements
-
JDK 1.8+
## 开始
```
java
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment